将字符串连接到 pig 中的字段
concatenate a string to a field in pig
我想concat
一个字符串到一个字段中的所有数据?
示例数据集 mydata 包含以下字段 ( id, name, email )
我想为字段名称中的所有数据添加字符串测试前缀。
我试过了
a = load 'mydata.csv' as (id, name, email);
b = foreach a generate id, concat('test', chararray(name));
我得到的结果是空的
有什么想法吗?
- In pig
concat
关键字应该在 Capital letters
中而不是小写字母。您需要将关键字 concat
更改为 CONCAT
.
- 您正在加载一个带有默认分隔符(制表符)的 CSV 文件。您确定您的 csv 文件是每个字段的制表符分隔符吗?否则你会得到一个奇怪的结果。如果您的 csv 文件是逗号分隔的分隔符,则在 PigStorage 中将显式分隔符指定为逗号。
- 在加载期间指定模式总是安全的,它将避免不必要的显式类型转换。
示例:
input.csv
1,aaa,user1@gmail.com
2,bbb,user2@gmail.com
3,ccc,user3@gmail.com
PigScript:
a = load 'input.csv' using PigStorage(',') as (id:int, name:chararray, email:chararray);
b = foreach a generate id, CONCAT('test', name);
DUMP b;
输出:
(1,testaaa)
(2,testbbb)
(3,testccc)
如果您的 csv 文件已经是制表符分隔符,则仅修复 CONCAT
问题。
我想concat
一个字符串到一个字段中的所有数据?
示例数据集 mydata 包含以下字段 ( id, name, email )
我想为字段名称中的所有数据添加字符串测试前缀。
我试过了
a = load 'mydata.csv' as (id, name, email);
b = foreach a generate id, concat('test', chararray(name));
我得到的结果是空的
有什么想法吗?
- In pig
concat
关键字应该在Capital letters
中而不是小写字母。您需要将关键字concat
更改为CONCAT
. - 您正在加载一个带有默认分隔符(制表符)的 CSV 文件。您确定您的 csv 文件是每个字段的制表符分隔符吗?否则你会得到一个奇怪的结果。如果您的 csv 文件是逗号分隔的分隔符,则在 PigStorage 中将显式分隔符指定为逗号。
- 在加载期间指定模式总是安全的,它将避免不必要的显式类型转换。
示例:
input.csv
1,aaa,user1@gmail.com
2,bbb,user2@gmail.com
3,ccc,user3@gmail.com
PigScript:
a = load 'input.csv' using PigStorage(',') as (id:int, name:chararray, email:chararray);
b = foreach a generate id, CONCAT('test', name);
DUMP b;
输出:
(1,testaaa)
(2,testbbb)
(3,testccc)
如果您的 csv 文件已经是制表符分隔符,则仅修复 CONCAT
问题。