首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何从库伯内特斯向三角洲湖写入数据

如何从库伯内特斯向三角洲湖写入数据
EN

Stack Overflow用户
提问于 2021-08-12 18:11:25
回答 1查看 867关注 0票数 2

我们的组织运行着Azure上的数据库,数据科学家和分析人员主要用于笔记本,以便进行特别的分析和探索。

我们还为不需要火花的ETL工作流运行Kubernetes集群。

我们希望使用达美湖作为我们的存储层,其中数据库和库伯奈特都可以读写作为头等舱公民。

目前,我们的Kubernetes作业直接将parquets写到blob存储,另外还有一个作业可以将databricks集群中的数据加载到Databrick的表格式中。这既慢又贵。

我想要做的是直接从Kubernetes python写到达美湖,而不是第一次将一个拼花文件转储到blob存储,然后触发一个额外的Databricks作业,将它加载到Delta湖格式。

相反,我也想利用达美湖向Kubernetes查询。

简而言之,我如何设置我的Kubernetes python环境,使它能够平等地访问现有的Databricks Delta进行写入和查询?

代码将不胜感激。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-08-14 11:14:08

您通常可以使用用于火花的Delta连接器写入Delta表。只需使用必要的包和配置选项启动一个火花作业

代码语言:javascript
运行
复制
spark-submit --packages io.delta:delta-core_2.12:1.0.0 \
  --conf "spark.sql.extensions=io.delta.sql.DeltaSparkSessionExtension" 
  --conf "spark.sql.catalog.spark_catalog=org.apache.spark.sql.delta.catalog.DeltaCatalog" 
...

并以与Databricks相同的方式编写:

代码语言:javascript
运行
复制
df.write.format("delta").mode("append").save("some_location")

但是,通过使用Delta的OSS版本,您可能会失去一些仅在Databricks上可用的优化,比如,数据跳过等等--在这种情况下,用Kubernetes编写的数据的性能可能会更低(实际上取决于您如何访问数据)。

有一种情况是,您无法写入由Databricks创建的Delta表--该表是由作者编写的,其编写版本高于OSS连接器所支持的编写版本(请参见德尔塔协议文档)。例如,当您在Delta表上启用变更数据馈送时会发生这种情况,该表在写入数据时执行其他操作。

除了Spark之外,还有计划为基于JVM的语言实现所谓的独立作家 (除了现有的独立阅读器之外)。还有一个用Rust实现的delta-rs项目 (带有Python的绑定),应该能够写入Delta表(但我自己还没有测试过)

更新14.04.2022:从版本1.2.0开始,OSS Delta中也有数据跳过

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68762384

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档