如何在 DBFS 中本地保存和下载 csv?

Posted

技术标签:

【中文标题】如何在 DBFS 中本地保存和下载 csv?【英文标题】:How to save and download locally csv in DBFS? 【发布时间】:2019-10-08 14:10:52 【问题描述】:

我正在尝试保存 csv 文件作为 SQL 查询的结果,通过 Databricks 发送到 Athena。 该文件应该是一个大约 4-6 GB(约 40m 行)的大表。

我正在做接下来的步骤:

    通过以下方式创建 PySpark 数据帧:

    df = sqlContext.sql("select * from my_table where year = 19")
    

    将 PySpark 数据帧转换为 Pandas 数据帧。我意识到,这一步可能是不必要的,但我只是开始使用 Databricks,可能不知道更快地完成所需的命令。所以我这样做:

    ab = df.toPandas()
    

    将文件保存在某处以便稍后在本地下载:

    ab.to_csv('my_my.csv')
    

但是如何下载呢?

由于我不知道使用 Databricks 的许多技巧和细节,因此请您说得非常具体。

【问题讨论】:

您要将文件下载到 DBFS 还是本地机器? 最后,我希望在我的机器上本地保存文件。 【参考方案1】:

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

要下载完整结果,首先将文件保存到 dbfs,然后使用 Databricks cli 将文件复制到本地计算机,如下所示。

dbfs cp "dbfs:/FileStore/tables/my_my.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

希望这会有所帮助。

【讨论】:

嗨@DmytroZelenyi 如果我的回答对您有帮助,您可以接受它作为答案(单击答案旁边的复选标记将其从灰色切换为已填充。)。这对其他社区成员可能是有益的。谢谢。 但是有没有办法将此步骤合并到脚本中?就像 pandas 一样,一行脚本可以是 df.to_csv("testing.csv") - 我们如何才能为 Databricks 实现相同的目标?

以上是关于如何在 DBFS 中本地保存和下载 csv?的主要内容,如果未能解决你的问题,请参考以下文章

Databricks:将dbfs:/ FileStore文件下载到我的本地计算机?

如何将本地 csv 文件的内容保存到“硬编码”Pandas DataFrame 中?

如何通过 SQL Workbench 将 Amazon Redshift 输出保存到本地 CSV?

如何从网络下载图像并将其保存在本地目录中?

如何在 CSV 文件中添加图像

如何按百分比将 CSV 数据集拆分为训练集和测试集,并将拆分后的数据集与 pandas 一起保存到本地文件夹中? [复制]