Почему ключевое слово для распределения таблицы "CLUSTERED BY"? - PullRequest
0 голосов
/ 27 мая 2019

Вопрос

CREATE TABLE some_db.some_tb (
    column_a STRING,
    column_b STRING
)
CLUSTERED BY (column_a) INTO 10 BUCKETS

Почему ключевое слово для определения таблицы как распределенной "CLUSTERED BY"?

Разработка

То, как я понял DISTRIBUTE BY и CLUSTER BY, это в основном

CLUSTER BY = DISTRIBUTE BY + SORT BY

Недавно я узнал, что когда вы создаете новую таблицу, вы можете указать при создании, как эта таблица должна быть распределена для будущих вставок. Другими словами: для каких столбцов должны возникать искры, создайте хеш, чтобы найти, в какой раздел должны быть записаны данные (исправьте меня, если я ошибаюсь).

В искре отсутствует ключевое слово "DISTRIBUTED BY". Как мне кажется, ключевое слово «CLUSTERED BY» неверно, потому что я предполагаю, что вы не заставляете spark сортировать данные перед вставкой чего-либо в эту таблицу. Чего мне не хватает?

Ссылки

Вот сообщение в блоге, которое объясняет, что делает CLUSTERED BY:

https://medium.com/a-muggles-pensieve/writing-into-dynamic-partitions-using-spark-2e2b818a007a

...