我需要在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
如果有办法,请告诉我。
答案 0 :(得分:1)
我没有尝试过,但你可以试试这个
B = Foreach A generate column1,UPPER(column2),column3;
答案 1 :(得分:0)
您可以使用Apache pig提供的默认用户定义函数
来完成此操作找到PiggyBank Jar
<强>命令强>
find / -name“piggybank * .jar *”
现在转到猪咕噜壳
<强>码强>
咕噜&GT;注册/usr/local/pig-0.16.0/contrib/piggybank/java/piggybank.jar;
咕噜&GT; A =使用PigStorage(',')加载'data / MyFile.txt'为(column1:chararray,column2:chararray,column3:chararray);
咕噜&GT; dump A;
<强>结果强>
(A,B,C)
(d,E,F)
现在将第二列转换为大写。
咕噜&GT; B = foreach A生成column1,org.apache.pig.piggybank.evaluation.string.UPPER(column2),column3;
咕噜&GT;转储B;
<强>结果强>
(A,B,C)
(d,E,F)
答案 2 :(得分:0)
使用下面一行中的“*”是额外列的原因:
B = FOREACH A generate *, UPPER(column2);
而是使用以下内容:
B = Foreach A generate column1, UPPER(column2), column3;