根据Apache Pig中定义的模式没有得到ouptut

时间:2016-08-30 15:12:59

标签: apache-pig

我是猪拉丁的新手,我在我的数据上尝试了这个架构,

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,)

请告诉我我做错了什么。

1 个答案:

答案 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;

输出

enter image description here

或者,您可以在不指定字段

的情况下加载样本数据
10,1,{(2,4),(5,6)}
10,3,{(1,3),(6,9)}

没有架构的加载脚本,但带有','作为字段分隔符

A = LOAD '/test8.txt' USING PigStorage(',');
DUMP A;

输出

enter image description here