Как я могу параллельно записывать файлы JSON в смонтированный каталог, используя Spark в Databricks - PullRequest
1 голос
/ 09 апреля 2019

У меня есть RDD из 50000 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'])

Этот подход работает, но для его завершения требуется вечность. Есть ли более быстрый способ?

1 Ответ

1 голос
/ 09 апреля 2019

Вы можете использовать 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']))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...