我需要在pig中将列的值转换为大写。
能够使用 UPPER
但这会创建一个新列。
例如:
A = Load 'MyFile.txt' using PigStorage(',') as (column1:chararray, column2:chararray, column3:chararray);
Dump A;
退货
a,b,c
d,e,f
现在我需要将第二列转换为大写。
B = Foreach A generate *,UPPER(column2);
Dump B;
退货
a,b,c,B
e,f,g,F
但我需要
a,B,c
e,F,g
如果有办法,请告诉我。
3条答案
按热度按时间inb24sb21#
在下一行中使用“*”是额外列的原因:
相反,请使用以下命令:
kpbpu0082#
我没有从我这边试过,但你可以这样试
acruukt93#
您可以使用apachepig提供的默认用户定义函数来完成
找到Pig缸
命令
find/-name“piggybank*.jar*”
现在去Pig呼噜壳
代码
grunt>register/usr/local/pig-0.16.0/contrib/piggybank/java/piggybank.jar;
grunt>a=load'data/myfile.txt',使用pigstorage(',')作为(第1列:chararray,第2列:chararray,第3列:chararray);
咕哝>倾倒;
结果
(a、b、c)
(d、e、f)
现在将第二列转换为大写。
grunt>b=foreach a生成column1,org.apache.pig.piggybank.evaluation.string.upper(column2),column3;
呼噜声>垃圾场b;
结果
(a、b、c)
(d、e、f)