Латинский скрипт PIG — использование group

#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:c‌​hararray,DESCRIPTION‌​:chararray,PART_NUMB‌​ER:chararray,SUPPLIE‌​R:chararray,LAND:cha‌​rarray);
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. Не могли бы вы отметить это как ответ, если это поможет ответить на ваш вопрос?