使用/ mnt /将数据从Azure Blob存储读取到Azure Databricks

时间:2019-03-15 19:51:42

标签: azure pyspark databricks azure-databricks

我已成功将blob存储装入了Databricks,并且在运行main.cpp时可以看到已定义的装入点。它有dbutils.fs.ls("/mnt/")-尚不清楚是否可以预期。

当我尝试运行size=0时,出现以下错误: dbutils.fs.ls("/mnt/<mount-name>")

当我尝试使用java.io.FileNotFoundException: / is not found将一个简单的文件写入安装的blob时,出现以下错误(为便于阅读而缩短):

dbutils.fs.put("/mnt/<mount-name>/1.txt", "Hello, World!", True)

所有数据都位于Blob容器的根目录中,因此我没有在ExecutionError: An error occurred while calling z:com.databricks.backend.daemon.dbutils.FSUtils.put. : shaded.databricks.org.apache.hadoop.fs.azure.AzureException: java.util.NoSuchElementException: An error occurred while enumerating the result, check the original exception for details. ... Caused by: com.microsoft.azure.storage.StorageException: The specified resource does not exist. 代码中定义任何文件夹结构。

思维表情符号

1 个答案:

答案 0 :(得分:0)

此处的解决方案是确保您使用的是共享访问签名(SAS)的“正确”部分。生成SAS时,您会发现可以使用它的许多不同部分-它很可能作为一个长连接字符串发送给您,例如:

BlobEndpoint=https://<storage-account>.blob.core.windows.net/;QueueEndpoint=https://<storage-account>.queue.core.windows.net/;FileEndpoint=https://<storage-account>.file.core.windows.net/;TableEndpoint=https://<storage-account>.table.core.windows.net/;SharedAccessSignature=sv=<date>&ss=nwrt&srt=sco&sp=rsdgrtp&se=<datetime>&st=<datetime>&spr=https&sig=<long-string>

定义安装点时,请使用SharedAccessSignature键的值,例如:

sv=<date>&ss=nwrt&srt=sco&sp=rsdgrtp&se=<datetime>&st=<datetime>&spr=https&sig=<long-string>