我正在尝试将一个数据包数据类型加载到一个猪表中,而是提出空值。
示例输入:
A000,B000,C000,1.0,1-1-14,3-31-14,{(A101,1-Jan-2014,0.03,0.04)}
A001,B001,C001,10.0,1-1-14,3-31-14,{(A101,1-Jan-2014,0.03,0.045)}
A002,B002,C002,100.0,1-1-14,3-31-14,{(A101,1-Jan-2014,0.03,0.04)}
Pig Script:
raw = LOAD 'input/meh.log' USING PigStorage(',') AS (PID, FUNDID, GICID, balance, startDate, endDate, rates:bag{t:tuple(t1,t2,t3,t4)});
DUMP raw;
输出:
(A000,B000,C000,1.0,1-1-14,3-31-14,)
(A001,B001,C001,10.0,1-1-14,3-31-14,)
(A002,B002,C002,100.0,1-1-14,3-31-14,)
^Bag values should be here
我做错了什么?我尝试从LOAD函数中删除bag / tuple声明,但仍然没有。
表示,在使用Pig附带的包教程时,我使用了相同的方法。UPDATE :如果我设置了包输入,以便每个元组都有一个值,那么这个脚本就可以了。我开始认为这可能是我的Pig版本(0.12.2)的问题。我不得不使用Ant构建Pig,以便它可以在Hadoop 2.3上运行。想法?
答案 0 :(得分:0)
重新格式化数据
A000 B000 C000 1 1-1-14 3-31-14 {(101,1-Jan-2014,0.03,0.04)}
A001 B001 C001 10 1-1-14 3-31-14 {(101,1-Jan-2014,0.03,0.04)}
A002 B002 C002 100 1-1-14 3-31-14 {(101,1-Jan-2014,0.03,0.04)}
使用标签分隔值。奇怪的是,有效。我将分隔符设置为','当它试图读包时可能会弄糊涂猪。我想如果你有多变量元组的包,要么将分隔符设置为除了','或者根本就没有设置它。