2015-03-04 3 views
1

как я Concat переменного с некоторым значением жёстко в PIGкак я Concat переменного с некоторым значением жёстко в PIG

A = НАГРУЗКИ 'данных' как (f1: chararray, f2: chararray, f3: chararray);

X = FOREACH A GENERATE CONCAT ("BIG", f3);

Ожидаемый результат:

(апач, открытый, BIGsource)

(Hadoop, карта, BIGreduce)

(свинья, свинья, BIGlatin)

ответ

1

Свинья не поддерживает двойной кавычки, поэтому вам нужно изменить жестко заданное значение от двойных до одинарных кавычек.

X = FOREACH A GENERATE f1,f2,CONCAT('BIG',f3); 

Update:
Вы можете использовать REPLACE функцию, чтобы удалить двойные кавычки из входных данных. Пример
ниже пример данных

"apache","open","source" 
"hadoop","map","reduce" 
"pig","pig","latin" 

PigScript:

A = LOAD 'data' USING PigStorage(',') AS (f1:chararray, f2:chararray, f3:chararray); 
B = FOREACH A GENERATE REPLACE(f1,'"',''),REPLACE(f2,'"',''),CONCAT('BIG',REPLACE(f3,'"','')); 
DUMP B 

Выход:

(apache,open,BIGsource) 
(hadoop,map,BIGreduce) 
(pig,pig,BIGlatin) 
+0

Я вводил данные как «apache», «open», «source», если я согласен с значением hardcode. Im получает вывод как «большой» источник, но как удалить «» из входных данных? – marjun

+0

@ user2575155, обновленное решение, вы можете проверить? –

+0

Я действительно удалил цитаты из самого источника. Ваше решение также работает – marjun

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