Слияние двух файлов с помощью Pig

#hadoop #apache-pig

#hadoop #apache-pig

Вопрос:

У меня есть два файла, которые я хочу объединить вместе. Формат этих двух файлов следующий — Первый файл (f.txt )

 Siler 1001
Gold  8009
  

Второй файл (s.txt )

 Apple 100
Banana 200
  

Я хочу, чтобы окончательный объединенный файл выглядел так —

 Siler 1001
Gold  8009
Apple 100
Banana 200
  

Я пытался использовать следующий код для этого —

 data1 = LOAD 'f.txt' AS name:chararray, num:int;
data2 = LOAD 's.txt' AS name:chararray, num:int;
data3 = UNION data1, data2;
data4 = GROUP data3 BY name;
data5 = FOREACH data4 GENERATE group, data3.num;
STORE data5 INTO 'final.txt';
  

Но с кодом вывод выглядит так —

 Silver {(1001)})
Gold {(8009)}
Apple {(100)}
Banana {(200)}
  

Я хочу, чтобы выходные данные выглядели так, как я упоминал выше. Любое предложение, как я могу этого добиться.

Ответ №1:

Нет необходимости группировать данные, поскольку требуется простое объединение двух файлов с одинаковой схемой. Простое ОБЪЕДИНЕНИЕ — это все, что нужно. Если у вас нет дублированных элементов, в которых необходимо добавить num, в этом случае вам придется группировать и суммировать.

 data1 = LOAD 'f.txt' AS name:chararray, num:int;
data2 = LOAD 's.txt' AS name:chararray, num:int;

data3 = UNION data1, data2;

STORE data3 INTO 'final.txt';