【问题标题】:Pyspark: Delta table as stream source, How to do it?Pyspark:Delta表作为流源,怎么做?
【发布时间】:2020-10-01 12:26:10
【问题描述】:

我在增量表上的 readStream 中遇到问题。

预期内容,参考以下链接 https://docs.databricks.com/delta/delta-streaming.html#delta-table-as-a-stream-source 例如:

spark.readStream.format("delta").table("events")  -- As expected, should work fine

问题,我尝试过如下方式:

df.write.format("delta").saveAsTable("deltatable")  -- Saved the Dataframe as a delta table

spark.readStream.format("delta").table("deltatable") -- Called readStream 

错误:

Traceback (most recent call last):
File "<input>", line 1, in <module>
AttributeError: 'DataStreamReader' object has no attribute 'table'

注意: 我在 localhost 中运行它,使用 pycharm IDE, 安装了最新版本的 pyspark,spark 版本 = 2.4.5,Scala 版本 2.11.12

【问题讨论】:

  • 要确认,使用开源 Delta Lake 或 databricks-connect 到 Databricks 集群?您使用的是哪个版本的 Delta Lake jar(如果在笔记本电脑/台式机上运行)?
  • 您的示例适用于 Databricks 笔记本
  • 我正在使用开源 Delta Lake,spark.jars.packages="io.delta:delta-core_2.11:0.6.1"。但是,正如您提到的,此代码在 Databricks Notebook 中运行良好。我可以知道原因吗?
  • 我真的不知道,因为您的第一行和第三行看起来相同。除非中间有某种语法错误,否则我不知道。请注意...几乎所有 Delta 示例都使用目录路径而不是表名。我一整天都在处理托管增量代码示例。

标签: apache-spark pyspark databricks delta-lake


【解决方案1】:

DataStreamReader.tableDataStreamWriter.table 方法还没有在 Apache Spark 中。目前您需要使用 Databricks Notebook 来调用它们。

【讨论】:

  • 知道什么时候可以使用吗?
  • 今年年底可能会推出 Apache Spark 3.1.0。
【解决方案2】:

现在尝试使用Delta Lake 0.7.0 release,它支持向 Hive 元存储注册您的表。正如评论中提到的,大多数 Delta Lake 示例都使用文件夹路径,因为在此之前没有集成 Metastore 支持。

另请注意,Delta Lake 的开源版本最好遵循https://docs.delta.io/latest/index.html 上的文档

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-09-19
    • 2011-12-23
    • 1970-01-01
    • 2012-07-16
    • 2017-01-05
    • 1970-01-01
    • 2017-06-05
    • 1970-01-01
    相关资源
    最近更新 更多