Как разместить файловые блоки HDFS с одинаковым / общим разделением, примененным для разных файлов / таблиц, в одном узле данных - PullRequest
0 голосов
/ 20 сентября 2018

У меня есть две большие таблицы, разбитые по столбцу даты.Они сохраняются в виде паркетных файлов в формате hdf.Каждый раздел разделен на блоки по 64 МБ и реплицирован 3 раза на компьютерах кластера.Чтобы оптимизировать операцию объединения, я хочу разместить одинаковые разделы даты на одних и тех же компьютерах (любое значение ключа объединения помещается только в один раздел дат).

В Spark есть объект Partitioner, который может помочь распределить блоки разных RDD по кластеру.Это довольно похоже на мой вопрос, но я боюсь, что после сохранения файловые блоки этих RDD могут быть перетасованы механизмом hdfs.Объяснено: RDD - это экземпляр Spark, а метод df saveAsTable (...) вызывает (я полагаю) некоторые низкоуровневые функции, которые выбирают узлы данных и реплицируют данные.

Может кто-нибудь помочь мне узнать, есть ли блокимои таблицы распределены правильно?

1 Ответ

0 голосов
/ 20 сентября 2018

Ответ на ваш вопрос заключается в том, что нельзя однозначно управлять размещением «похожих / похожих» блоков данных с точки зрения разделения логически связанных файлов / таблиц.Т.е. вы не можете влиять на то, на каких узлах данных блоки данных размещаются HDFS.

Эти разделы / порции данных могут по совпадению находиться на одних и тех же узлах / работниках данных (из-за репликации HDFS.

В отличие от S3, такой подход не работает ни в одном случае, так какКонцепция оптимизации локальности данных не существует.

...