如何将Azure Databricks Notebook单个单元格输出保存到文件?
保存Azure Databricks Notebook单个单元格输出到文件的可行方法
以下是几种可靠的实现方式,根据你的输出类型选择对应方案:
1. 输出为Spark DataFrame时直接写入文件
如果单元格输出是Spark DataFrame,可直接利用Spark的write API将数据持久化到DBFS(或挂载的云存储):
# 假设你的DataFrame名为df,以CSV格式写入DBFS df.write.format("csv")\ .option("header", "true")\ .mode("overwrite")\ .save("/dbfs/your/target/path/output.csv") # 若需Parquet格式(更高效的列存格式) df.write.format("parquet")\ .mode("overwrite")\ .save("/dbfs/your/target/path/output.parquet")
2. 捕获文本类输出(如print结果、计算值)
如果输出是普通文本或控制台打印内容,可通过重定向标准输出捕获后写入文件:
import sys from io import StringIO # 保存原始输出流 original_stdout = sys.stdout # 创建缓冲区捕获输出 captured_out = StringIO() sys.stdout = captured_out # 这里是你要执行的单元格代码(示例) print("单元格的输出内容") calc_result = 100 * 5 print(f"计算结果:{calc_result}") # 恢复原始输出流 sys.stdout = original_stdout # 获取捕获的文本 output_content = captured_out.getvalue() # 写入DBFS文件 with open("/dbfs/your/target/path/output.txt", "w", encoding="utf-8") as f: f.write(output_content)
3. 保存可视化输出(如Matplotlib图表)
如果单元格输出是图表,可直接将图表保存为图片文件:
import matplotlib.pyplot as plt # 生成示例图表 plt.bar(["A", "B", "C"], [20, 35, 15]) plt.title("示例柱状图") # 保存到DBFS plt.savefig("/dbfs/your/target/path/plot.png") plt.close()
关键注意事项
- 所有路径优先使用
/dbfs/开头,对应Databricks文件系统的本地挂载路径,写入后数据会持久化(集群重启不会丢失);若写本地路径(/tmp/等),仅当前集群生命周期内有效。 - 若需将文件导出到本地电脑,可通过Databricks UI的DBFS浏览器下载,或用
dbutils.fs.cp将文件复制到挂载的云存储后再下载。
内容的提问来源于stack exchange,提问作者Chand Prem
相关产品推荐
相关产品推荐

