gpt4 book ai didi

azure - 由于 "com.microsoft.azure.storage.StorageException",无法将流写入容器内的目录

转载 作者:行者123 更新时间:2023-12-03 06:07:45 24 4
gpt4 key购买 nike

我有两个容器,其中具有相似的文件夹结构。我正在使用自动加载器读取和写入来自 csv 文件输入的数据流。我可以将 csv 容器作为流读取,但当我尝试写入流时,出现错误“com.microsoft.azure.storage.StorageException:指定的资源名称包含无效字符。”

spark.conf.set("fs.azure.account.auth.type.stockseval.dfs.core.windows.net", "SAS") Spark.conf.set("fs.azure.sas .token.provider.type.stockseval.dfs.core.windows.net","org.apache.hadoop.fs.azurebfs.sas.FixedSASTokenProvider")spark.conf.set("fs.azure.sas.fixed.token .stockseval.dfs.core.windows.net", dbutils.secrets.get(scope="stocksevalSAStoken", key="stocksevalSAStoken"))

cloudFilesOption = {
"cloudFiles.format": "csv",
"cloudFiles.useNotifications": "true", # Use file notifications for efficient discovery
"cloudFiles.includeExistingFiles": "true", # Process existing files in addition to new ones
"cloudFiles.connectionString": dbutils.secrets.get(scope="stockseval-con-string", key="stockseval-con-string"),
"cloudFiles.resourceGroup": "stocks",
"cloudFiles.subscriptionId": dbutils.secrets.get(scope="subscription-id", key="subscription-id"),
"cloudFiles.tenantId": dbutils.secrets.get(scope="tenant-id", key="tenant-id"),
"cloudFiles.clientId": dbutils.secrets.get(scope="clientid", key="clientid"),
"cloudFiles.clientSecret": dbutils.secrets.get(scope = "adls-db", key = "client-secret"),
"cloudFiles.queueName": "stocksevalQ", # This queue will be created if it doesn't exist
"cloudFiles.maxFilesPerTrigger": "100", # Number of files to process per micro-batch
"cloudFiles.schemaLocation" : "abfss://<a href="https://stackoverflow.com/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="5a3c33343b3439333b363e3b2e3b773b2a331a292e353931293f2c3b36743e3c29743935283f742d33343e352d2974343f2e" rel="noreferrer noopener nofollow">[email protected]</a>/",
"cloudFiles.schemaEvolutionMode" : "addNewColumns"
}

landing_loc = "abfss://<a href="https://stackoverflow.com/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="bddbd4d3dcd3ded4dcd1d9dcc9dc90dccdd4fdcec9d2ded6ced8cbdcd193d9dbce93ded2cfd893cad4d3d9d2cace93d3d8c9" rel="noreferrer noopener nofollow">[email protected]</a>/balance-sheet-data-api/AnnualReports/"

df = spark.readStream.format("cloudFiles").options(**cloudFilesOption).option("Header" ,True).load(landing_loc)
bronze_layer = "abfss://<a href="https://stackoverflow.com/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="7f1916111e111c161e131b1e0b1e521e0f16521d0d1011051a3f0c0b101c140c1a091e13511b190c511c100d1a510816111b10080c51111a0b" rel="noreferrer noopener nofollow">[email protected]</a>/balance-sheet-data-api/AnnualReports/"
query1 = df.writeStream.format("delta").outputMode("append").trigger(once = True).queryName("Autoloader").option("checkpointLocation", "abfss://financialdata-api-bro<a href="https://stackoverflow.com/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="a7c9ddc2e7d4d3c8c4ccd4c2d1c6cb89c3c1d489c4c8d5c289d0cec9c3c8d0d489c9c2d3" rel="noreferrer noopener nofollow">[email protected]</a>/").start(bronze_layer)

我已经仔细检查了容器和路径的名称,并在存储帐户中重新创建了 sas token ,以便我可以访问多个容器。我什至可以使用 db.utils.fs.ls 列出青铜位置中的文件,并且当给出相同的路径来写入流时,它会显示资源中的无效字符。老实说,不知道在这里做什么。任何帮助将不胜感激,因为这是我的第一个 Azure 项目。

I can read the stream

最佳答案

您收到的错误是由于

"cloudFiles.queueName": "stocksevalQ"

在这里,您不应为队列名称提供大写字母。

我在尝试你的代码时遇到了同样的错误。

enter image description here

如果您尝试使用此名称创建队列,您将收到错误,如下所示。

enter image description here

因此尝试给出符合此条件的队列名称。我给出了 stockseval 并成功执行。

如果你能看到青铜层中的数据。

enter image description here

还有

enter image description here

关于azure - 由于 "com.microsoft.azure.storage.StorageException",无法将流写入容器内的目录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/77152192/

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