Как создать разделенные слиянием разделы в Spark - PullRequest
0 голосов
/ 30 августа 2018

У меня есть два набора данных с одинаковым количеством разделов; скажем 2 (на самом деле это порядка тысяч, но для простоты предположим 2)

В моей схеме у меня есть два обязательных поля ИД пользователя и метка времени.

Секционер работает, вычисляя хеш (userId)% numPartitions. И каждый раздел сортируется по составному (userId, timestamp) в порядке возрастания.

Я сохранил оба набора данных в виде файлов Parquet в двух разных каталогах A и B. Набор данных в папке A содержит файлы A0.parquet и A1.parquet Набор данных в папке B содержит файлы B0.parquet и B1.parquet

Мой вопрос (ы):

  1. Как я могу убедиться, что при загрузке набора данных A, spark всегда загружает один раздел на файл, т.е.

Раздел # 0 => A / A0.parquet

Раздел # 1 => A / A1.parquet

  1. Как я могу убедиться, что, когда я загружаю наборы данных A и B вместе (с помощью объединения или другого практического метода загрузки), у меня все равно будет 2 раздела, т.е.

Раздел # 0 => mergeSorted (A / A0.parquet, B / B0.parquet)

Раздел # 1 => сортировка слиянием (A / A1.parquet, B / B1.parquet)

Примечание. Предыдущая версия этого вопроса была помечена как дубликат, так как по ошибке перепутала вопрос о разделах HDFS, я говорю здесь о разделах Spark. Это определенно не дубликат; Суть вопроса заключается в том, как обрабатывать и объединять разделы в Spark, а не в том, как Spark использует разделы HDFS. HDFS - это просто слой хранения, разделы Spark следует рассматривать отдельно от разделов HDFS; и ответом на это можно считать использование локального диска, NFS, EFS, s3 ...

...