将文件从 databricks 复制到 blob 存储会导致文件大小为 0

Sou*_*rty 3 python azure azure-blob-storage databricks

我正在尝试使用以下命令将文件从 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")
Run Code Online (Sandbox Code Playgroud)

现在 blobname 和 outputcontainername 是正确的,并且我已将之前的文件复制到存储位置。仅今天,当我执行命令时,我得到的文件大小为 0。此外,文件 data.csv 确实存在于给定位置,并且不为空或损坏。有谁知道会发生什么?屏幕截图显示了我的意思。

文件大小为 0

Pet*_*Pan 8

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

下面是我的示例代码。

  1. 要将 Azure Blob 存储的容器挂载到 Azure Databricks 作为dbfs路径,您可以将cpdatabricks 路径中的文件挂载到 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')
    
    Run Code Online (Sandbox Code Playgroud)
  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')
    
    Run Code Online (Sandbox Code Playgroud)

希望能帮助到你。