#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';