如何在 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 数据集拆分为训练集和测试集,并将拆分后的数据集与 pandas 一起保存到本地文件夹中? [复制]