输入的存储和变量模式

p8ekf7hl  于 2021-06-04  发布在  Hadoop
关注(0)|答案(3)|浏览(311)

我有一个逗号分隔的文本文件,比如

1,abc,1,
2,def,1,2,3,4
3,ghi,1,2
4,jkl,1,5,6,7,8,9
5,mno

文本文件将始终具有前两个值,但在第二个逗号后将具有0个或更多值。
如何加载此数据并为前两个值提供别名?
我可以通过以下方式加载它,而不为前两个值提供别名:

A = LOAD 'data.txt' USING PigStorage(',');

从这里开始,我可以 B = FOREACH A GENERATE $0 AS foo:chararray, $1 AS bar:chararray; 但它会抛弃剩下的。如果做一个通配符,把其余的放进一个元组,那就太好了。
有什么办法吗?

mrzz3bfm

mrzz3bfm1#

试试这个

B = foreach A generate $0 as foo:chararray, $1 as bar:chararray, $2..;

参考
在清管器中滴入单柱

0sgqnhkj

0sgqnhkj2#

我不知道你需要什么。
试试这个

A = LOAD 'data.txt' USING PigStorage(',') AS (foo:chararray, bar:chararray);

这将忽略文件中第二个逗号后的其他值。

pb3s4cty

pb3s4cty3#

或者你也可以创建一个Map来重新定义字段。

相关问题