【问题标题】:How can I download a file from blob storage如何从 Blob 存储下载文件
【发布时间】:2019-10-14 15:12:23
【问题描述】:

我的 Blob 存储中有一个 CSV 文件。我想下载文件。奇怪的是,我实际上看不到文件。文件 CSV 由 Python 作业创建并转换为 Scala 数据帧。

当我运行这两行代码时:

# convert python df to spark df and export the spark df
spark_df = spark.createDataFrame(df)
## Write Frame out as Table
spark_df.write.csv("dbfs:/rawdata/corp/AAA.csv")

我得到这个错误:

org.apache.spark.sql.AnalysisException: path dbfs:/rawdata/corp/AAA.csv already exists.;

奇怪的是,我在使用 Azure 存储资源管理器时看不到该文件。显然该文件存在,即使我看不到它。如何下载此 CSV 文件?如果这里有人可以提出更好的选择,我想最好使用 Databricks,或者可能是其他东西。

谢谢。

【问题讨论】:

    标签: azure azure-blob-storage databricks


    【解决方案1】:

    注意:使用 GUI,您可以下载完整的结果(最多 100 万行)。

    要下载完整结果(超过 100 万),首先将文件保存到 dbfs,然后使用 Databricks cli 将文件复制到本地机器,如下所示。

    dbfs cp "dbfs:/FileStore/tables/AA.csv" "A:\AzureAnalytics"

    参考:Databricks file system

    DBFS 命令行界面 (CLI) 使用 DBFS API 向 DBFS 公开易于使用的命令行界面。使用此客户端,您可以使用类似于在 Unix 命令行上使用的命令与 DBFS 交互。例如:

    # List files in DBFS
    dbfs ls
    # Put local file ./apple.txt to dbfs:/apple.txt
    dbfs cp ./apple.txt dbfs:/apple.txt
    # Get dbfs:/apple.txt and save to local file ./apple.txt
    dbfs cp dbfs:/apple.txt ./apple.txt
    # Recursively put local dir ./banana to dbfs:/banana
    dbfs cp -r ./banana dbfs:/banana
    

    参考:Installing and configuring Azure Databricks CLI

    希望这会有所帮助。

    【讨论】:

    • 你完全正确。几天前我才知道这一点。感谢分享。
    【解决方案2】:

    如何使用 blob 存储 sdk 和以下命令

    # Download as a file
    block_blob_service.get_blob_to_path(container_name, blob_name, local_file_name)
    

    【讨论】:

      【解决方案3】:

      我在这里找到了另一个不错的解决方案。

      https://docs.databricks.com/notebooks/notebooks-use.html

      就在这一步之前,显示一个数据框的内容,运行这行代码。

      display(df)
      

      【讨论】:

        猜你喜欢
        • 2018-04-25
        • 1970-01-01
        • 2021-12-08
        • 2018-11-07
        • 1970-01-01
        • 2020-08-08
        • 2018-01-08
        相关资源
        最近更新 更多