У меня есть два набора данных с одинаковым количеством разделов; скажем 2 (на самом деле это порядка тысяч, но для простоты предположим 2)
В моей схеме у меня есть два обязательных поля
ИД пользователя и метка времени.
Секционер работает, вычисляя хеш (userId)% numPartitions. И каждый раздел сортируется по составному (userId, timestamp) в порядке возрастания.
Я сохранил оба набора данных в виде файлов Parquet в двух разных каталогах A и B.
Набор данных в папке A содержит файлы A0.parquet и A1.parquet
Набор данных в папке B содержит файлы B0.parquet и B1.parquet
Мой вопрос (ы):
- Как я могу убедиться, что при загрузке набора данных A, spark всегда загружает один раздел на файл, т.е.
Раздел # 0 => A / A0.parquet
Раздел # 1 => A / A1.parquet
- Как я могу убедиться, что, когда я загружаю наборы данных 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 ...