将字符串连接到pig中的字段

7lrncoxx  于 2021-06-04  发布在  Hadoop
关注(0)|答案(1)|浏览(318)

我喜欢 concat 字段中所有数据的字符串?
示例数据集mydata包含以下字段 ( id, name, email ) 我喜欢在字段名中的所有数据中添加字符串test的前缀。
我试过了

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

我得到的结果是空的
有什么想法吗?

osh3o9ms

osh3o9ms1#

在Pig身上 concat 关键字应在 Capital letters 不是小写字母。你需要更改关键字 concatCONCAT .
您正在加载带有默认分隔符(制表符)的csv文件。您确定csv文件是每个字段的制表符分隔符吗?另一方面,你会得到一个奇怪的结果。如果您的csv文件是逗号分隔的分隔符,则在存储中指定显式分隔符为逗号。
在加载期间指定模式总是安全的,这样可以避免不必要的显式类型转换。
示例:
输入.csv

1,aaa,user1@gmail.com
2,bbb,user2@gmail.com
3,ccc,user3@gmail.com

Pig手稿:

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

相关问题