2013-04-27 4 views
0

В каноническом примере свинг-свиньи мне любопытно, как люди подходят к оптимизации условий, при которых группировка по слову может привести к созданию мешка с множеством элементов.Hadoop Pig - Оптимизация количества слов

Например:

A = load 'input.txt'; 
B = foreach A generate flatten(TOKENIZE((chararray)$0)) as word; 
C = group B by word; 
D = foreach C generate COUNT(B), group; 

В строке C, если есть слово, скажем, «в» и что происходит 1 миллиард раз во входном файле, это может привести к редуктору, висящей на очень долгое время обработки. Что можно сделать, чтобы оптимизировать это?

ответ

0

В любом случае, PIG будет оценивать, может ли комбинатор использоваться и будет ли он, если это так.

В случае вашего примера он, очевидно, представит объединитель, который уменьшит количество пар значений ключа на слово до нескольких или только один в лучшем случае. Так что на стороне редуктора вы не получите огромное количество ключей/значений за данное слово.

+0

Вы правы, что последние версии Pig автоматически объединяют те, которые вы увидите в пояснениях. В то время как это уменьшит количество пар ключевых значений, которые попадают в редукторы для слов с высоким значением, на практике это, по-видимому, не уменьшает его. Эти горячие точки могут привести к тому, что один редуктор застрянет в течение нескольких часов после того, как все остальное закончится. Любые другие оптимизации? – charmquark

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