2016-08-30 140 views
0

我是新来的Pig Latin和我想在我的数据这个模式中定义的模式没有得到的ouptut,根据Apache的猪

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

您拥有的示例数据格式不正确。您的加载语句使用','作为字段分隔符。但包中的元组也被','分隔,因此数据未正确加载。

解决此问题的一种方法是为字段选择不同的分隔符。例如选项卡,管道,分号。

使用标签作为字段分隔符和逗号作为元组分隔

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