Перераспределение большого количества файлов json в s3 в паркет с EMR занимает очень много времени - PullRequest
0 голосов
/ 29 марта 2019

В настоящее время пытаются записать большое количество (7,5 миллионов) файлов json из s3 в несколько файлов паркета (128 МБ) или 3600 записей на файл с помощью EMR. Однако этот процесс либо занимает слишком много времени, либо не выдает правильное количество файлов.

Следующее выполняется на основных узлах EMR 12x c4.8xlarge, r3.2xlarge master node

df = spark.read.json("s3://BUCKET)

После чтения файла в информационный кадр. Попытка написать запись напрямую в s3

df.write.parquet("s3://BUCKET")

однако, это создало 200 000 файлов с только приблизительно 36 записями на файл за 3 часа

Я попытался переделить и объединить

df.coalesce(2000).write.parquet("s3://BUCKET")
df.repartition(2000).write.parquet("s3://BUCKET")

однако это заняло около 10 часов

Ожидаемый результат

  1. установить количество записей или установить размер файла для файла паркета
  2. весь процесс должен выполняться менее 3 часов

Пожалуйста, предложите любую конфигурацию EMR или код искры (приветствуются решения Python или Scala), который я должен использовать

Также, если у кого-то есть идеи, почему EMR создает так много задач, с которых можно начать, это также будет полезно

...