将字符串连接到猪的字段

时间:2015-01-30 00:47:05

标签: 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)); 

我在这个

上得到空洞的结果

有什么想法吗?

1 个答案:

答案 0 :(得分:5)

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

    <强> 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问题。