Я не могу найти подходящий вариант использования для объединения ковша в куст.
Как я вижу, при соединении таблицы A с таблицей B:
Объединение ковша экономит время прохождения таблицы A редукторам при загрузке таблицы B в распределенный кеш, и каждый обработчик обрабатывает соответствующее ведро таблицы B vs ведро таблицы A.HIVE - какие варианты использования для объединения в ковш
Но загрузка таблицы B в распределенный кеш выполняется одной задачей, поэтому при увеличении таблицы становится это узким местом.
Итак, если таблица B достаточно мала, чтобы не обременять одну задачу, она практически такая же, как и обычное объединение карт с небольшой оптимизацией.
С другой стороны, если таблица B не может вписаться в один картограф, имеет целое, процесс чтения его в распределенный кеш может занять некоторое время.
Наконец, кажется, что время загрузки таблицы B в распределенный кеш-память может стоить того, потому что нам не нужно передавать ведра таблицы A из картографов в редукторы, но этот процесс не должен быть слишком тяжелый, если таблица A действительно большая, потому что каждый обработчик считывает один ведро, которое соответствует одному редуктору (таблицы разделены клавишей соединения). Каждый редуктор извлекает 2 промежуточных выхода (по одному для каждой таблицы, что неплохо, что редуктор выполняется на том же узле, что и соответствующий его сопоставитель) и объединяет их, и с этой точки соединение является таким же, как и в mappers.
В заключении, я думаю, что вопрос, что стоит больше:
- Загрузки умеренного размера таблицы в распределенном кэш от одной задачи
- Passing много умеренных (возможно большого) ведер размера от мапперы к редукторам (в основном локально) и слияние двух файлов - все делается параллельно.
Что вы думаете? Может ли кто-нибудь найти хорошее использование для объединения в bucket?
Вы ссылаетесь на объединение сортировки слияния, поскольку я говорил о регулярном объединении ковша. Конечно, есть много хороших привычек для сортировки по объему. – dimamah