gpt4 book ai didi

azure - 从 Azure Synapse Pyspark 笔记本将增量表写入 ADLS

转载 作者:行者123 更新时间:2023-12-03 01:59:45 25 4
gpt4 key购买 nike

我正在使用无服务器 SQL 池将增量格式表从 Azure Synapse Pyspark 笔记本写入 ADLS Gen2。

在写入 ADLS Gen2 时,它抛出错误,如下所示。 enter image description here

Py4JJavaError: An error occurred while calling o3898.save.
: Operation failed: "An HTTP header that's mandatory for this request is not specified.", 400, PUT,

下面是我用来写入 ADLS 的代码。

if (DeltaTable.isDeltaTable(spark, source_path)):
print('Existing delta table')
# Read the existing Delta Table
delta_table = DeltaTable.forPath(spark, source_path)

# Merge new data into existing table
delta_table.alias("existing").merge(
source = df_eventLog.alias("updates"),
condition = " AND ".join(conditions_list)

).whenMatchedUpdateAll(
).whenNotMatchedInsertAll(
).execute()
else:
print('New delta table')
# Create new delta table with new data
df_eventLog.write.format('delta').save(source_path)

就我而言,Delta 表最初不可用,因此,其他部分正在运行。 df_eventLog 加载正常,没有错误。

有人可以帮我解决我出错的地方吗?

最佳答案

我尝试使用 Lake 数据库中的增量表复制相同的问题。我正在尝试将其写入 ADLS 存储帐户,并使用以下代码将增量表加载到数据框中:

df_delta = spark.read.format("delta").table("<database>.<tableNmae>") 

当我使用下面的代码将数据帧写入 ADLS 时,我得到了与下面的屏幕截图相同的错误:

delta_table_path = "abfss://<containerName>@<ADLSName>.blob.core.windows.net/"df_delta.write.format("delta").mode("overwrite").save(delta_table_path)

enter image description here

据此MS Document寻址 ADLS 存储帐户 URL 应位于 abfs[s]://<file_system>@<account_name>.dfs.core.windows.net/<path>/<file_name>格式。据此我修改了 delta_table_path如下所述:

delta_table_path = "abfss://<containerName>@<ADLSName>.dfs.core.windows.net/<filepath>"

我再次尝试使用上述 URL 格式写入数据。成功写入指定路径,没有任何错误。

enter image description here

enter image description here

关于azure - 从 Azure Synapse Pyspark 笔记本将增量表写入 ADLS,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/76754759/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com