如何从Kubernetes向Delta Lake写入数据

2024-06-01 03:23:21 发布

您现在位置:Python中文网/ 问答频道 /正文

我们的组织在Azure上运行Databricks,数据科学家和;分析员主要为笔记本电脑,以便进行特别的分析和探索

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

我们希望使用Delta Lakes作为我们的存储层,在这里,Databricks和Kubernetes都可以作为一等公民进行读写。
目前,我们的Kubernetes作业直接将拼花写入blob store,还有一个额外的作业,用于启动databricks集群,将拼花数据加载到Databrick的表格式中。这既慢又贵

我想做的是直接从Kubernetes python写入Delta lake,而不是先将拼花文件转储到blob存储,然后触发额外的Databricks作业将其加载到Delta lake格式。
相反,我还想利用Delta lake从Kubernetes查询


简言之,如何设置Kubernetes python环境,使其能够平等地访问现有的Databricks Delta Lake进行写操作&;查询?
如蒙惠顾,不胜感激


Tags: 数据格式作业集群azureblobkubernetesspark
1条回答
网友
1楼 · 发布于 2024-06-01 03:23:21

您可以通常可以使用Delta connector for Spark写入增量表。只需使用necessary packages and configuration options启动Spark作业:

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上相同的方式写入:

df.write.format("delta").mode("append").save("some_location")

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

可能有这样一种情况:您无法写入由Databricks创建的增量表,即该表是由writer以OSS Delta connector支持的更高版本写入的(请参见Delta Protocol documentation)。例如,当您在Delta表上启用Change Data Feed时会发生这种情况,该Delta表在写入数据时执行附加操作

除了Spark之外,还计划为基于JVM的语言实现所谓的Standalone writer(除了现有的Standalone reader)。还有一个用Rust实现的delta-rs project(带有Python和Ruby的绑定),应该能够写入Delta表(但我自己还没有测试过)

相关问题 更多 >