如何在 Databricks 中使用 Spark 将 JSON 文件并行写入挂载目录
How do I parallel write JSON files to a mounted directory using Spark in Databricks
我有一个 RDD
的 50,000 JSON 个文件,我需要将这些文件写入 Spark (Databricks) 中的挂载目录。安装的路径类似于 /mnt/myblob/mydata
(使用 Azure)。我尝试了以下方法,但事实证明我无法在 Spark 作业中使用 dbutils
。
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'])
这种方法有效,但需要很长时间才能完成。有没有更快的方法?
您可以使用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']))
我有一个 RDD
的 50,000 JSON 个文件,我需要将这些文件写入 Spark (Databricks) 中的挂载目录。安装的路径类似于 /mnt/myblob/mydata
(使用 Azure)。我尝试了以下方法,但事实证明我无法在 Spark 作业中使用 dbutils
。
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'])
这种方法有效,但需要很长时间才能完成。有没有更快的方法?
您可以使用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']))