找不到帐户.blob.core.windows.net中的blob容器mycontainer读取XML时出错

时间:2019-05-29 09:38:09

标签: xml azure-storage-blobs databricks

我使用以下内容阅读xml val df = spark.read .option(“ rowTag”,“测试”) .xml(xmlpath) xmlpath是wasbs://mycontainer@.blob.core.windows.net/ 但它具有以下错误 shaded.databricks.org.apache.hadoop.fs.azure.AzureException:shaded.databricks.org.apache.hadoop.fs.azure.AzureException:找不到帐户.blob.core.windows.net中的容器mycontainer,我们可以不要使用匿名凭证创建它,并且在配置中找不到用于它们的凭证。 发生了什么事

我将同一文件放入另一个Blob帐户,代码成功运行。我不知道那个Blob帐户会怎样。

2 个答案:

答案 0 :(得分:0)

根据错误消息,我认为您的SAS令牌不起作用。创建SAS令牌的一种简单方法是使用Microsoft Azure存储资源管理器,如下所示。

enter image description here

enter image description here

enter image description here

有关如何连接Azure blob的更多信息,请参考this doc或下面的代码。

spark.conf.set(
  "fs.azure.sas.<your-container-name>.<your-storage-account-name>.blob.core.windows.net",
  "<the query string you copy>") 

dbutils.fs.ls("wasbs://<your-container-name>@<your-storage-account-name>.blob.core.windows.net/<your-directory-name>")

预期输出:

enter image description here

希望这会有所帮助。

答案 1 :(得分:0)

XML库使用RDD API。使用spark.conf.set(...)设置的Hadoop配置选项无法通过SparkContext访问。这意味着,虽然它们对DataFrame和Dataset API可见,但对RDD API不可见。如果使用RDD API读取Azure Blob存储,则必须设置凭据,例如。 G。通过集群配置:

spark.hadoop.fs.azure.account.key.aseursvgspasasandbox380.blob.core.windows.net <storage-key>

另请参见Azure Databricks Documentation部分:使用RDD API访问Azure Blob存储。