如何在 Spark 结构化流中指定 deltalake 表的位置?

Posted

技术标签:

【中文标题】如何在 Spark 结构化流中指定 deltalake 表的位置?【英文标题】:How to specify the location of a deltalake table in spark structured streaming? 【发布时间】:2019-06-27 14:51:28 【问题描述】:

我有一个流数据传入,我使用以下代码将其保存为 deltalake 表:

cast_dataframe.writeStream.format("delta").outputMode("append")
.option("checkpointLocation",checkpointLocation)
.table(databasename+"."+tablename)

这里的database是数据库名,tablename是用来创建表的表名。

当我使用 show create table 来显示表的架构时,位置字段指向一个随机位置,例如 abfs://storageaccount@storageaccount.dfs.core.net /默认/db_name/table_name。但是,我想将该位置指向我指定的位置。我该怎么做?

我尝试了以下方法,但没有成功。

 cast_dataframe.writeStream.format("delta").outputMode("append")
 .option("checkpointLocation",checkpointLocation)
 .table(databasename+"."+tablename)
  .save(my_specified_location)

但是上面的方法行不通。请帮我解决这个问题。

【问题讨论】:

【参考方案1】:

.table.save 是动作,根本不能同时使用。这实际上与增量数据源无关。


在Delta Lake table as a sink的官方文档中,您可以找到以下内容:

.start("/delta/events") // as a path

这似乎完全符合您的“但是我想将该位置指向我指定的位置。”

【讨论】:

以上是关于如何在 Spark 结构化流中指定 deltalake 表的位置?的主要内容,如果未能解决你的问题,请参考以下文章

如何在spark-submit中指定

如何在流分析作业 ARM 模板中指定数据库表作为输出

如何在数据框中指定缺失值

Azure Synapse:Spark 作业定义中指定的目标 Spark 池未处于成功状态。当前状态:供应

Spark 从 IBM Informix 数据库读取数据“在日期值的字符串表示中指定的标记不足”

如何使用 C 在 linux 中指定时区