You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Databricks如何将SQL查询结果存储到本地磁盘CSV/Excel文件?

问题根因
  • to_csv是Pandas DataFrame的内置方法,你当前操作的是Spark DataFrame,原生不存在该方法,直接调用必然报错。
  • Databricks Notebook的代码运行在远端集群服务器上,而非你本地的Windows电脑,你写的file:///C:/路径指向的是集群节点的本地磁盘,Linux系统根本没有Windows的C盘盘符,就算是Windows集群节点,文件写入后也存在远端服务器上,你本地电脑无法直接访问。
可行操作方案

方案1:小数据集(<10万行)快速导出

直接转Pandas DataFrame后生成下载链接,步骤最简单:

%python
# Spark DataFrame转Pandas DataFrame
pdf = df.toPandas()

# 导出CSV到集群临时存储,utf-8-sig编码避免Windows打开中文乱码
pdf.to_csv("/dbfs/tmp/customer.csv", index=False, encoding="utf-8-sig")

# 若需要导出Excel,先安装依赖再执行导出
# %pip install openpyxl
# pdf.to_excel("/dbfs/tmp/customer.xlsx", index=False)

执行完上述代码后,运行以下命令生成可点击的下载链接,点击即可将文件保存到你本地电脑磁盘:

%python
# CSV下载链接
displayHTML("<a href='/files/tmp/customer.csv' target='_blank'>下载CSV文件</a>")
# Excel下载链接
# displayHTML("<a href='/files/tmp/customer.xlsx' target='_blank'>下载Excel文件</a>")

方案2:大数据集(>10万行)导出

数据量较大时转Pandas容易出现内存溢出,用Spark原生API写入后再下载:

%python
import os
# 合并为单文件写入DBFS临时路径
df.coalesce(1).write.option("header","true").option("sep",",").mode("overwrite").csv("/tmp/customer_spark_output")

# 定位Spark生成的csv分片文件,重命名为固定文件名
csv_file = [f for f in os.listdir("/dbfs/tmp/customer_spark_output") if f.endswith(".csv")][0]
os.rename(f"/dbfs/tmp/customer_spark_output/{csv_file}", "/dbfs/tmp/customer_final.csv")

# 生成下载链接
displayHTML("<a href='/files/tmp/customer_final.csv' target='_blank'>下载CSV文件</a>")

方案3:临时取数无代码导出

直接在Notebook中运行display(df)渲染结果表,点击表格右上角的下载按钮,可直接选择导出为CSV/Excel格式,无需编写额外导出代码,适合小批量临时取数场景。

注意事项
  • 永远不要在Databricks代码中直接写本地电脑的磁盘路径(如C:/开头的路径),代码运行环境和你的本地电脑不共享文件系统,这类路径不可能正常生效。
  • 数据量超过100万行时不建议使用方案1,优先选择方案2避免集群Driver节点内存溢出。
  • 导出CSV时使用utf-8-sig编码,可避免Windows系统下用Excel打开文件出现中文乱码。

内容的提问来源于stack exchange,提问作者SeleniumUser

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.26 19:42:25