s3 parquet write - слишком много разделов, медленное написание - PullRequest
0 голосов
/ 06 мая 2018

У меня есть работа с scala spark для записи в s3 в виде файла паркета. Пока это 6 миллиардов записей, и он будет расти с каждым днем. В соответствии с вариантом использования, наш API будет запрашивать паркет на основе идентификатора. Чтобы ускорить результаты запроса, я пишу паркет с разделами по id. Тем не менее, у нас есть 1330360 уникальных идентификаторов, поэтому мы создаем 1330360 файлов паркета во время записи, поэтому этап записи очень медленный, запись в течение последних 9 часов и работа продолжается.

output.write.mode("append").partitionBy("id").parquet("s3a://datalake/db/")

Есть ли в любом случае, я могу уменьшить количество разделов и все же сделать запрос на чтение быстрее? Или любой другой лучший способ справиться с этим сценарием? Спасибо.

РЕДАКТИРОВАТЬ: - id представляет собой целочисленный столбец со случайными числами.

1 Ответ

0 голосов
/ 06 мая 2018

вы можете разделить по диапазонам идентификаторов (вы ничего не сказали об идентификаторах, поэтому я не могу предложить что-то конкретное) и / или использовать сегменты вместо разделов https://www.slideshare.net/TejasPatil1/hive-bucketing-in-apache-spark

...