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

如何修改Azure Databricks中display导出Spark DataFrame的CSV分隔符

解决Azure Databricks导出CSV自定义分隔符的问题

右键导出DataFrame的方式无法自定义分隔符,你可以通过以下两种代码方式实现以分号(;)为分隔符的CSV导出:

方法1:导出到DBFS后下载

这种方式适合数据量较大的场景,利用Spark原生写入API:

# 可选:将DataFrame合并为单个文件,避免生成多个分区小文件
df_single = df.coalesce(1)

# 导出为分号分隔的CSV,保存到DBFS路径
df_single.write \
  .format("csv") \
  .option("sep", ";") \
  .option("header", "true")  # 保留表头
  .option("quoteAll", "true")  # 强制所有字段用引号包裹,避免文本特殊字符破坏CSV结构
  .mode("overwrite")  # 覆盖已有文件,可替换为append/ignore等模式
  .save("/dbfs/temp/output_semicolon")

操作步骤:

  • 执行代码后,在Databricks左侧菜单栏进入「Data」→「DBFS」,找到路径/temp/output_semicolon
  • 找到生成的part-00000-xxx.csv文件,右键选择「Download」
  • 可手动将文件重命名为output.csv这类易识别的名称

方法2:直接在Notebook生成下载链接

适合数据量较小的场景,转换为Pandas DataFrame后生成浏览器可直接下载的链接:

# 将Spark DataFrame转换为Pandas DataFrame
pandas_df = df.toPandas()

# 生成分号分隔的CSV内容,所有字段加引号避免格式错乱
csv_content = pandas_df.to_csv(
  sep=";",
  index=False,  # 不导出索引列
  header=True,  # 保留表头
  quoting=1  # 1表示所有字段用引号包裹,对应csv.QUOTE_ALL
)

# 生成HTML下载链接
displayHTML(f'<a href="data:text/csv;charset=utf-8,{csv_content}" download="output.csv">点击下载分号分隔的CSV</a>')

执行代码后,Notebook会显示一个链接,点击即可直接下载CSV文件。

关键参数说明

  • sep=";":指定CSV的分隔符为分号
  • quoteAll=True(Spark API)或quoting=1(Pandas API):强制所有字段用双引号包裹,确保文本字段中的逗号、分号等特殊字符不会导致CSV列错位
  • coalesce(1):将Spark DataFrame合并为单个分区,避免生成多个小文件(数据量极大时不建议使用,会影响性能)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.18 03:20:15