首页 > 解决方案 > 如何在 Databricks 中使用 Spark 将 JSON 文件并行写入挂载目录

问题描述

我需要将RDD50,000 个 JSON 文件写入 Spark(Databricks)中的已安装目录。挂载的路径看起来像/mnt/myblob/mydata(使用 Azure)。我尝试了以下方法,但事实证明我无法dbutils在 Spark 作业中使用。

def write_json(output_path, json_data):
     dbutils.fs.put(output_path, json_data)

我目前必须做的是将数据带到本地(到驱动程序),然后调用该write_json方法。

records = my_rdd.collect()
for r in records:
     write_json(r['path'], r['json'])

这种方法有效,但需要很长时间才能完成。有更快的方法吗?

标签: apache-sparkdatabricksazure-databricks

解决方案


您可以使用map并行执行此操作。

def write_json(output_path, json_data):
    with open(output_path, "w") as f:
        f.write(json_data)

my_rdd.map(lambda r: write_json(r['path'], r['json']))

推荐阅读