我是 Delta Live Table 的新手。
我正在尝试根据 databricks 教程创建一个增量实时表。
我创建了一个笔记本并附加了一个交互式集群 -DBR 14.3-LTS。
我正在运行以下代码。
当我第一次运行它时,它运行成功了。
当我第二次运行单元格时,我收到错误 - AnalysisException:无法重新定义数据集“sales_orders_raw”
您能帮我理解为什么会发生这种情况吗?
from pyspark.sql.functions import *
from pyspark.sql.types import *
import dlt
@Dlt.create_table(
comment="The raw sales orders, ingested from /databricks-datasets.",
table_properties={
"myCompanyPipeline.quality": "bronze",
"pipelines.autoOptimize.managed": "true"
}
)
def sales_orders_raw():
return (
spark.readStream.format("cloudFiles") \
.option("cloudFiles.schemaLocation", "/tmp/john.odwyer/pythonsalestest") \
.option("cloudFiles.format", "json") \
.option("cloudFiles.inferColumnTypes", "true") \
.load("/databricks-datasets/retail-org/sales_orders/")
)
你能帮我理解我做错了什么吗
添加答案,以便可以关闭此问题。
你没有做错任何事。第一次运行它没有错误意味着你的语法是正确的。您无法直接从笔记本运行 DLT 管道,如此处所述。
Delta Live Tables 查询主要在 Databricks 中实现 笔记本电脑,但 Delta Live Tables 并非设计用于运行 在笔记本单元格中交互。执行包含 Delta 的单元格 Databricks 笔记本中的实时表语法会导致错误 信息。要运行查询,您必须将笔记本配置为 管道的一部分。
既然您知道语法是正确的,您应该尝试从 DLT 管道执行笔记本。另外,您的 Dlt.create_table 应该是 dlt.table。 @Dlt 是错误的语法,并且 @dlt.create_table 已被弃用。现在仅使用@dlt.table,如here所述。