2012-01-12 3 views
1

Скажем, у меня есть следующий вход в апаче свиньи:Напротив группы GROUP в апаче свинья латин?

(123, ((1, 2), (3, 4))) 
(666, ((8, 9), (10, 11), (3, 4))) 

, и я хочу, чтобы преобразовать эти 2 строки в следующих 7 строк:

(123, (1, 2)) 
(123, (3, 4)) 
(666, (8, 9)) 
(666, (10, 11)) 
(666, (3, 4)) 

т.е. это Сорт «делает противоположные группа'. Возможно ли это в свинцовом латине?

ответ

2

Посмотрите на FLATTEN. Он делает то, что вам, вероятно, нужно.

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

Вместо:

(123, ((1, 2), (3, 4))) 
(666, ((8, 9), (10, 11), (3, 4))) 

Вы должны представлять данные в виде:

(123, { (1, 2), (3, 4) }) 
(666, { (8, 9), (10, 11), (3, 4) }) 

Затем, когда именно эта форма, вы можете сделать:

O = FOREACH grouped GENERATE $0, FLATTEN($1); 
+0

Да, это то, что Мне нужно. Я изменил свои входные данные, так что это мешок, а не кортеж, и это отлично работает. – Rory

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