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

如何在Databricks中将PySpark DataFrame保存为可下载Excel文件

在Databricks中从PySpark DataFrame生成可下载Excel文件的方法

你可以通过以下几种方式实现本地下载生成的Excel文件:

方法一:利用FileStore目录生成Web下载链接

Databricks的/FileStore目录支持通过Web UI访问,你可以将生成的Excel文件复制到该目录,然后通过浏览器链接下载:

import pandas as pd
import xlsxwriter

# 将PySpark DataFrame转换为Pandas DataFrame
pandas_df = REV_COMP_DF.toPandas()
# 保存到Driver节点的临时目录
local_temp_path = '/tmp/revenue.xlsx'
pandas_df.to_excel(local_temp_path, engine='xlsxwriter', header=True)

# 复制到DBFS的FileStore目录
dbfs_store_path = '/FileStore/revenue.xlsx'
dbutils.fs.cp(f'file:{local_temp_path}', dbfs_store_path, overwrite=True)

# 生成可直接访问的下载链接
workspace_host = dbutils.notebook.entry_point.getDbutils().notebook().getContext().browserHostName().get()
print(f"Excel文件下载链接:https://{workspace_host}/files/revenue.xlsx")

执行后,复制打印的链接到浏览器即可下载(需保持Databricks工作区登录状态)。

方法二:通过Databricks UI手动下载

将文件复制到/FileStore目录后,可通过UI操作下载:

  • 打开Databricks左侧导航栏的「数据」选项
  • 找到FileStore目录,定位到目标Excel文件
  • 右键点击文件,选择「下载」

方法三:直接在Notebook中生成下载按钮(无需存DBFS)

如果数据量较小,可将Excel文件写入内存流,通过HTML按钮直接触发下载:

import pandas as pd
import xlsxwriter
from io import BytesIO
import base64

# 转换为Pandas DataFrame
pandas_df = REV_COMP_DF.toPandas()

# 将Excel写入内存字节流
output_stream = BytesIO()
with pd.ExcelWriter(output_stream, engine='xlsxwriter') as writer:
    pandas_df.to_excel(writer, header=True)
output_stream.seek(0)

# 生成Base64编码并创建下载按钮
excel_base64 = base64.b64encode(output_stream.read()).decode()
download_button = f"""
<a href="data:application/vnd.openxmlformats-officedocument.spreadsheetml.sheet;base64,{excel_base64}" download="revenue.xlsx">点击下载Excel文件</a>
"""
displayHTML(download_button)

执行代码后,Notebook会显示一个可点击的按钮,点击即可直接下载到本地。

注意事项

  • 若PySpark DataFrame数据量过大,不建议转换为Pandas DataFrame(会将全量数据加载到Driver节点,可能引发内存溢出),这种情况建议使用Spark专用的Excel处理库进行分布式写入,再通过上述方法下载合并后的文件。
  • FileStore目录下的文件仅对已登录Databricks工作区的用户可见,无需担心公开访问问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.28 19:52:38