在pig中将列的值转换为大写

dxpyg8gm  于 2021-06-21  发布在  Pig
关注(0)|答案(3)|浏览(329)

我需要在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

如果有办法,请告诉我。

inb24sb2

inb24sb21#

在下一行中使用“*”是额外列的原因:

B = FOREACH A  generate *, UPPER(column2);

相反,请使用以下命令:

B = Foreach A  generate column1, UPPER(column2), column3;
kpbpu008

kpbpu0082#

我没有从我这边试过,但你可以这样试

B = Foreach A  generate column1,UPPER(column2),column3;
acruukt9

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)

相关问题