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

时间:2017-04-13 05:14:44

标签: apache-pig

我需要在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 个答案:

答案 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;