Выбор ответа Senior Spark обновлено

Соление ключа

Вопрос

Как работает соление (salting) ключа при джойне перекошенной большой таблицы с небольшой таблицей, которая всё же не влезает в broadcast?

Попробуйте сами

Выберите вариант, и откроется разбор.

Показать ответ и разбор

Коротко

Правильный ответ: К ключу большой таблицы добавляют случайный суффикс 0..N-1, маленькую размножают на N копий. Суффикс делит строки горячего ключа на N частей, которые попадают в разные партиции; размножение маленькой стороны гарантирует, что каждая часть найдёт пару.

Варианты ответа

  1. Ключи хешируют криптографической функцией, чтобы Spark распределил горячие значения по партициям равномерно
  2. Маленькую таблицу сортируют по ключу и бакетируют, а большую оставляют как есть, чтобы избежать shuffle
  3. Удаляют самый частый ключ из данных, а его строки после джойна восстанавливают из бэкапа
  4. К ключу большой таблицы добавляют случайный суффикс 0..N-1, маленькую размножают на N копийправильный ответ

Разбор

Суффикс делит строки горячего ключа на N частей, которые попадают в разные партиции; размножение маленькой стороны гарантирует, что каждая часть найдёт пару. Цена: маленькая сторона вырастает в N раз. Шифрование не меняет частоты. Сортировка одной стороны не решает перекос. Удалять данные нельзя, хотя горячие ключи иногда обрабатывают отдельно.

Ответьте сами, а не прочитайте

В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.