在Databricks/Azure Data Lake中:批量保存15k CSV及单文件计算后存储方法
问题1:如何在Databricks或Azure Data Lake中保存15000个CSV文件?
在Databricks中实现
- Spark分区批量保存:如果数据源是DataFrame,可通过指定分区数让Spark自动拆分生成多文件,适合大规模数据场景:
# 假设df是源DataFrame,设置分区数为15000(需根据数据量调整,避免空文件) df.repartition(15000).write.mode("overwrite").option("header", "true").csv("/dbfs/mnt/adls/target/path/") - 循环单文件保存:如果需要自定义文件命名或内容,可遍历数据子集逐个保存:
# 假设data_list包含15000个数据子集 for idx, subset in enumerate(data_list): subset.to_csv(f"/dbfs/mnt/adls/target/path/file_{idx}.csv", index=False)
直接操作Azure Data Lake
如果本地已有15000个CSV文件,用Azure CLI批量上传:
az storage blob upload-batch --destination <容器名> --source <本地文件夹路径> --account-name <存储账户名>
问题2:如何从Azure Data Lake下载CSV文件,执行计算后重新保存为CSV格式?
在Databricks中需确保已挂载ADLS Gen2,路径格式为abfss://<容器名>@<存储账户名>.dfs.core.windows.net/,或使用DBFS挂载路径。
完整代码示例:
- 读取ADL中的CSV文件:
# pandas读取(适合小文件) data = pd.read_csv("abfss://container@storageaccount.dfs.core.windows.net/example.csv") - 执行计算:
new_data = data // 2 + data - 将结果保存回ADL:
new_data.to_csv("abfss://container@storageaccount.dfs.core.windows.net/example_calculated.csv", index=False)
若使用DBFS挂载路径,可替换为/dbfs/mnt/adls/example.csv这类格式。
内容的提问来源于stack exchange,提问作者Norbert
相关产品推荐
相关产品推荐

