2013-06-19 2 views
0

Я не могу найти подходящий вариант использования для объединения ковша в куст.
Как я вижу, при соединении таблицы A с таблицей B:
Объединение ковша экономит время прохождения таблицы A редукторам при загрузке таблицы B в распределенный кеш, и каждый обработчик обрабатывает соответствующее ведро таблицы B vs ведро таблицы A.HIVE - какие варианты использования для объединения в ковш

Но загрузка таблицы B в распределенный кеш выполняется одной задачей, поэтому при увеличении таблицы становится это узким местом.
Итак, если таблица B достаточно мала, чтобы не обременять одну задачу, она практически такая же, как и обычное объединение карт с небольшой оптимизацией.

С другой стороны, если таблица B не может вписаться в один картограф, имеет целое, процесс чтения его в распределенный кеш может занять некоторое время.

Наконец, кажется, что время загрузки таблицы B в распределенный кеш-память может стоить того, потому что нам не нужно передавать ведра таблицы A из картографов в редукторы, но этот процесс не должен быть слишком тяжелый, если таблица A действительно большая, потому что каждый обработчик считывает один ведро, которое соответствует одному редуктору (таблицы разделены клавишей соединения). Каждый редуктор извлекает 2 промежуточных выхода (по одному для каждой таблицы, что неплохо, что редуктор выполняется на том же узле, что и соответствующий его сопоставитель) и объединяет их, и с этой точки соединение является таким же, как и в mappers.

В заключении, я думаю, что вопрос, что стоит больше:

  1. Загрузки умеренного размера таблицы в распределенном кэш от одной задачи
  2. Passing много умеренных (возможно большого) ведер размера от мапперы к редукторам (в основном локально) и слияние двух файлов - все делается параллельно.

Что вы думаете? Может ли кто-нибудь найти хорошее использование для объединения в bucket?

ответ

0

Я думаю, вы сбиваете с толку ведро, соединяющееся с mapjoin. В объединении карт меньшая таблица загружается в распределенный кеш, предполагая, что она достаточно мала, и она отправляет всем картографам. Существует переписка 1 к N.

В объединении ковша вы соединяете две большие таблицы, каждая из которых хранит данные таким же образом: в N ведрах (файлах), в квадратных скобках и сортируется по тому же столбцу, с которым вы соединяетесь. Таким образом, таблица A имеет N ведер, таблица B также содержит N ведер, поэтому вы можете объединить ведро # 1 в A с ведром # 1 из B, # 2 с # 2 и т. Д. Это соответствие 1 к 1, N раз. Это также делается на стороне карты, но распределенный кеш не задействован.

+0

Вы ссылаетесь на объединение сортировки слияния, поскольку я говорил о регулярном объединении ковша. Конечно, есть много хороших привычек для сортировки по объему. – dimamah

Смежные вопросы