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

Convert the value of a column to uppercase in pig

我需要在 pig 中将列的值转换为大写。

可以使用 UPPER 来完成,但这会创建一个新列。

例如:

A = Load 'MyFile.txt' using PigStorage(',') as (column1:chararray, column2:chararray, column3:chararray);
Dump A;

Returns

a,b,c
d,e,f

现在我需要将第二列转换为大写。

B = Foreach A  generate *,UPPER(column2);
Dump B;

returns

a,b,c,B
e,f,g,F

但我需要

a,B,c
e,F,g

如果有办法,请告诉我。

我没试过,但你可以这样试

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

您可以使用 Apache pig 默认提供的用户定义函数来实现

找到存钱罐

命令

查找/-名称"piggybank*.jar*"

now goto pig grunt shell

代码

grunt> 注册 /usr/local/pig-0.16.0/contrib/piggybank/java/piggybank.jar;

grunt> A = 使用 PigStorage(',') as (column1:chararray, column2:chararray, column3:chararray);

加载 'data/MyFile.txt'

grunt> 转储 A;

结果

(a,b,c)

(d,e,f)

现在将第二列转换为大写。

grunt> B = foreach A 生成 column1,org.apache.pig.piggybank.evaluation.string.UPPER(column2),column3;

grunt> 转储 B;

结果

(a,B,c)

(d,E,f)

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

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

改为使用以下内容:

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