使用 /mnt/ 将数据从 Azure Blob 存储读取到 Azure Databricks
Reading data from Azure Blob Storage into Azure Databricks using /mnt/
我已成功将我的 blob 存储安装到 Databricks,并且可以在 运行ning dbutils.fs.ls("/mnt/")
时看到定义的安装点。这有 size=0
- 不清楚这是否符合预期。
当我尝试 运行 dbutils.fs.ls("/mnt/<mount-name>")
时,出现此错误:
java.io.FileNotFoundException: / is not found
当我尝试使用 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.
所有数据都在 Blob 容器的根目录中,所以我没有在 dbutils.fs.mount
代码中定义任何文件夹结构。
思考表情符号
此处的解决方案是确保您使用的是共享访问签名 (SAS) 的 'correct' 部分。生成 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>
我已成功将我的 blob 存储安装到 Databricks,并且可以在 运行ning dbutils.fs.ls("/mnt/")
时看到定义的安装点。这有 size=0
- 不清楚这是否符合预期。
当我尝试 运行 dbutils.fs.ls("/mnt/<mount-name>")
时,出现此错误:
java.io.FileNotFoundException: / is not found
当我尝试使用 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.
所有数据都在 Blob 容器的根目录中,所以我没有在 dbutils.fs.mount
代码中定义任何文件夹结构。
思考表情符号
此处的解决方案是确保您使用的是共享访问签名 (SAS) 的 'correct' 部分。生成 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>