将字符串连接到猪的字段

suz*_*zil 4 hadoop apache-pig

我喜欢concat字段中所有数据的字符串?

例如,数据集mydata包含以下字段( id, name, email )我想将字符串test的前缀添加到字段名称中的所有数据.

我试过了

a = load 'mydata.csv' as (id, name, email);
b = foreach a generate id, concat('test', chararray(name)); 
Run Code Online (Sandbox Code Playgroud)

我在这方面得到了空洞的结果

有什么想法吗 ?

Siv*_*man 5

  1. 在pig concat关键字应该是Capital letters不小的字母.您需要将关键字更改concatCONCAT.
  2. 您正在加载带有默认分隔符(选项卡)的CSV文件.您确定您的csv文件是每个字段的制表符单独分隔符吗?另外,你会得到一个奇怪的结果.如果您的csv文件是逗号分隔的分隔符,则在PigStorage中将显式分隔符指定为逗号.
  3. 在加载期间指定模式总是安全的,它将避免不必要的显式类型转换.

示例示例:

input.csv

1,aaa,user1@gmail.com
2,bbb,user2@gmail.com
3,ccc,user3@gmail.com
Run Code Online (Sandbox Code Playgroud)

PigScript:

a = load 'input.csv' using PigStorage(',') as (id:int, name:chararray, email:chararray);
b = foreach a generate id, CONCAT('test', name);
DUMP b;
Run Code Online (Sandbox Code Playgroud)

输出:

(1,testaaa)
(2,testbbb)
(3,testccc)
Run Code Online (Sandbox Code Playgroud)

如果您的csv文件已经是制表符分隔分隔符,则只修复该CONCAT问题.