我正在尝试将一个包数据类型加载到一个pig表中,并使用空值代替。
样本输入:
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脚本:
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附带的包教程时也使用了同样的方法,看起来效果不错。
更新:如果我设置bag输入,使每个元组都有一个值,那么这个脚本可以工作。我开始认为这可能是我的pig版本(0.12.2)的一个问题。我必须使用ant构建pig,这样它才能在hadoop2.3上运行。思想?
1条答案
按热度按时间bis0qfac1#
重新格式化数据
用制表符分隔这些值。奇怪的是,它起作用了。我将分隔符设置为“,”,这可能使pig在读取包时感到困惑。我猜如果你有多变量元组的包,要么将分隔符设置为“,”以外的任何值,要么根本不设置它。