2016-08-30 23 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