将文件从数据块复制到Blob存储会导致文件大小为0

时间:2019-07-29 14:15:19

标签: python azure azure-storage-blobs databricks

我正在尝试使用以下命令将文件从数据块复制到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确实存在于给定位置,并且不为空或损坏。有谁知道会发生什么?屏幕截图显示了我的意思。

Files of size 0

1 个答案:

答案 0 :(得分:0)

我知道,有两种方法可以将文件从Azure Databricks复制到Azure Blob存储。请参阅Azure Databricks主题Data Sources的官方文档Azure Blob Storage,以了解更多详细信息。

这是下面的示例代码。

  1. 要将Azure Blob存储的容器作为dbfs路径安装到Azure Databricks,您可以cp在databricks路径中的文件到Blob存储的已安装路径。请参阅Mount Azure Blob Storage containers with DBFS

    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')
    
  2. 要设置帐户访问密钥或为容器设置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')
    

希望有帮助。