我是猪拉丁的新手,我在我的数据上尝试了这个架构,
A = LOAD 'data' USING PigStorage(',') AS (f1:int, f2:int, B:bag{T:tuple(t1:int,t2:int)});
我的示例数据是
10,1,{(2,4),(5,6)}
10,3,{(1,3),(6,9)}
在执行\ d时,终端上的输出为:
(10,1,)
(10,3,)
请告诉我我做错了什么。
答案 0 :(得分:0)
您拥有的样本数据格式不正确。您的加载语句使用','作为字段分隔符。但是,包中的元组也用','分隔,因此数据未正确加载。
解决此问题的一种方法是为字段选择不同的分隔符。例如tab,pipe,分号。
使用Tabs作为字段分隔符,使用逗号作为元组分隔符
10 1 {(2,4),(5,6)}
10 3 {(1,3),(6,9)}
带有架构的制表符分隔字段的脚本
A = LOAD 'test8.txt' using PigStorage('\t') AS (f1:int, f2:int, B:bag{T:tuple(t1:int,t2:int)});
DUMP A;
输出
或者,您可以在不指定字段
的情况下加载样本数据10,1,{(2,4),(5,6)}
10,3,{(1,3),(6,9)}
没有架构的加载脚本,但带有','作为字段分隔符
A = LOAD '/test8.txt' USING PigStorage(',');
DUMP A;
输出