Выбор ответа Senior Spark обновлено
Соление ключа
Вопрос
Как работает соление (salting) ключа при джойне перекошенной большой таблицы с небольшой таблицей, которая всё же не влезает в broadcast?
Попробуйте сами
Выберите вариант, и откроется разбор.
Показать ответ и разбор
Коротко
Правильный ответ: К ключу большой таблицы добавляют случайный суффикс 0..N-1, маленькую размножают на N копий. Суффикс делит строки горячего ключа на N частей, которые попадают в разные партиции; размножение маленькой стороны гарантирует, что каждая часть найдёт пару.
Варианты ответа
- Ключи хешируют криптографической функцией, чтобы Spark распределил горячие значения по партициям равномерно
- Маленькую таблицу сортируют по ключу и бакетируют, а большую оставляют как есть, чтобы избежать shuffle
- Удаляют самый частый ключ из данных, а его строки после джойна восстанавливают из бэкапа
- К ключу большой таблицы добавляют случайный суффикс 0..N-1, маленькую размножают на N копийправильный ответ
Разбор
Суффикс делит строки горячего ключа на N частей, которые попадают в разные партиции; размножение маленькой стороны гарантирует, что каждая часть найдёт пару. Цена: маленькая сторона вырастает в N раз. Шифрование не меняет частоты. Сортировка одной стороны не решает перекос. Удалять данные нельзя, хотя горячие ключи иногда обрабатывают отдельно.
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.