如何将Azure ADLS存储帐户名称和容器名称传递给spark.readStream

问题描述 投票:0回答:1

我在同一资源组下有两个存储帐户(STORAGE_ACCOUNT_A 和 STORAGE_ACCOUNT_B),并且我已经设置了 Spark Streaming 作业(自动加载器)。

df = Spark.readStream.format(“cloudFiles”)
.option("cloudFiles.useNotifications", "true")
.option("cloudFiles.tenantId", "XXXX")
.option("cloudFiles.subscriptionID", "XXXX")
.option("cloudFiles.resourceGroup", "XXXX")
.option("cloudFiles.clientId", "XXXX")
.option("cloudFiles.clientSecret", "XXXX")
.option("cloudFiles.format", "csv")
.option("标题", "真")
.架构(架构)
.load(源路径)

但是当我转移到 source_path 中的其他存储帐户时,会出现如下错误。

java.lang.IllegalStateException:文件事件

{"create":{"bucket":"CONTAINER@STORAGE_ACCOUNT_B","key":"workbench/data/Landing/table/file.csv","size":800,"eventTime":1706107083508,"sequencer":"0000000000000000000000000002def9000000000000279c","newerThan$default$2":false}}
中的容器与源预期的不同:
CONTAINER@STORAGE_ACCOUNT_A

Spark Autoloader 无意中读取在资源组级别触发的新文件创建事件,从而影响从新迁移的存储帐户中提取数据。如何限制Spark Autoloader选择性地消耗仅与迁移的存储帐户相关的文件事件/队列,确保数据处理准确

pyspark azure-blob-storage azure-databricks spark-structured-streaming databricks-autoloader
1个回答
0
投票

这确实应该是一条评论,但我还没有足够的声誉来发表评论。

您想要实现的目标似乎文件通知模式不支持

您可以尝试两者之一:

© www.soinside.com 2019 - 2024. All rights reserved.