#hadoop
#hadoop
Вопрос:
У меня есть файл со следующим содержимым
ВВОД:
TOYID;TOYSeries;ModuleID;ID;PART_NUMBER;SUPPLIER;LAND
394107;C204; 731305; 69807402;A0001532122;ABC;AT
394107;C204; 731307; 69807402;A0001532122;ABC;AT
394107;C204; 731315; 69807402;A0001532122;ABC;AT
394107;C204; 731325; 69807402;A0001532122;ABC;AT
394107;C204; 731335; 69807402;A0001532122;ABC;AT
394107;C204; 731345; 69807402;A0001532122;ABC;AT
Я хочу, чтобы вывод был таким
Вывод:
SUPPLIER;LAND; COUNT(SUPPLIER,LAND); TOYID TOYSeries; ModuleID; ID; PART_NUMBER
ABC;AT; 6 ; 394107 C204; 731305; 69807402; A0001532122
ABC;AT 6 ; 394107 C204; 731307; 69807402; A0001532122
Я пытался:
A = LOAD 'hdfs://localhost:8020/BigData_POC/....../TOY_Detail.txt' USING PigStorage(';') AS (TOYID:chararray,TOYSeries:chararray,ModuleID:chararray,ID:chararray,DESCRIPTION:chararray,PART_NUMBER:chararray,SUPPLIER:chararray,LAND:chararray);
B = FOREACH A GENERATE TOYID,ModuleID,DESCRIPTION,PART_NUMBER,SUPPLIER,LAND;
C = GROUP B by (SUPPLIER,LAND);
D = foreach C generate group, COUNT(B) as cnt, B.TOYID,B.ModuleID,B.PART_NUMBER;
Я получаю вывод следующим образом:
(ПОСТАВЩИК, ЗЕМЛЯ) КОЛИЧЕСТВО {(TOYID) (TOYID) (TOYID)…(TOYID) (MODULEID) (MODULEID) (MODULEID)… (MODULEID)(НОМЕР ПАРТНЕРА) (НОМЕР ПАРТНЕРА)… (НОМЕР ПАРТНЕРА)}
Знаете ли вы какой-либо pig latin script, доступный для этого?
Комментарии:
1. покажите нам, что вы уже пробовали….
Ответ №1:
Основываясь на вашем комментарии, не могли бы вы попробовать это в качестве решения? Я сам это не проверял, поэтому может потребоваться некоторая настройка.
D = foreach C generate group, COUNT(B) as cnt;
E = foreach D generate group.supplier as supplier, group.land as land, cnt;
F = Join B by (supplier,land),E by (supplier,land)
Комментарии:
1. Я пробовал это, все работает нормально. но я получаю повторяющиеся столбцы для ПОСТАВЩИКА, LAND.
2. Именно так вы написали ожидаемый результат в своем вопросе.
3. Спасибо Amit за вашу помощь.
4. Не могли бы вы отметить это как ответ, если это поможет ответить на ваш вопрос?