python - 将文件从数据块复制到 blob 存储会导致文件大小为 0
问题描述
我正在尝试使用以下命令将文件从数据块复制到 blob 存储中的某个位置:
dbutils.fs.cp('dbfs:/FileStore/tables/data/conv_subset_april_2018.csv',"wasb://blobname@outputcontainername.blob.core.windows.net/" + "conv_subset_april_2018" + ".csv")
现在 blobname 和 outputcontainername 是正确的,并且我之前已将文件复制到存储位置。直到今天,当我执行命令时,我才得到大小为 0 的文件。文件 data.csv 确实存在于给定位置,并且不是空的或损坏的。有谁知道会发生什么?屏幕截图显示了我的意思。
解决方案
据我所知,有两种方法可以将文件从 Azure Databricks 复制到 Azure Blob 存储。请参阅Azure DatabricksAzure Blob Storage
主题的官方文档Data Sources
以了解更多详细信息。
下面是我的示例代码。
若要将 Azure Blob 存储容器作为
dbfs
路径装载到 Azure Databricks,您可以cp
将数据块路径中的文件指向 Blob 存储的装载路径。请参阅使用 DBFS 装载 Azure Blob 存储容器。dbutils.fs.mount( source = "wasbs://<your-container-name>@<your-storage-account-name>.blob.core.windows.net", mount_point = "/mnt/<mount-name>", extra_configs = {"fs.azure.account.key.<your-storage-account-name>.blob.core.windows.net":"<your-storage-account-key>"}) dbutils.fs.cp('dbfs:/FileStore/tables/data/conv_subset_april_2018.csv','dbfs:/mnt/<mount-name>/conv_subset_april_2018.csv') # Or dbutils.fs.cp('/FileStore/tables/data/conv_subset_april_2018.csv','/mnt/<mount-name>/conv_subset_april_2018.csv')
设置帐户访问密钥或为容器设置 SAS,然后将文件从
dbfs
文件路径复制到wasbs
文件路径。spark.conf.set( "fs.azure.account.key.<your-storage-account-name>.blob.core.windows.net", "<your-storage-account-access-key>") # Or # spark.conf.set( # "fs.azure.sas.<your-container-name>.<your-storage-account-name>.blob.core.windows.net", # "<complete-query-string-of-your-sas-for-the-container>") dbutils.fs.cp('/FileStore/tables/data/conv_subset_april_2018.csv','wasbs://blobname@outputcontainername.blob.core.windows.net//conv_subset_april_2018.csv')
希望能帮助到你。
推荐阅读
- node.js - nodemon npm 顺序启动脚本
- python - 如何为不同的蜘蛛设置相同的缓存文件夹,现在scrapy在缓存目录中为每个蜘蛛创建子文件夹
- python - 如何缓冲来自多线程函数调用的日志,以便可以按函数完成的顺序记录它们?
- javascript - 我无法获取使用 XmlHttpRequest 找到的 URL 的图像
- ruby-on-rails - 嵌套路由 - Ruby on Rails
- assembly - 使用 RSI/RDI 与 r8-r15(速度优化)
- jquery - event.stopPropagation() 仍然无法在 firefox 上运行,但在 chrome 上运行正常
- .net - Web api 文件大小下载限制
- python - CVXOPT 投资组合优化
- python - Python matplotlib - 根据值向网格图添加边框