2014-07-24 43 views
0

我有一個JSON:JSON解析在Apache的豬

{"Name":"sampling","elementInfo":{"fraction":"3"},"destination":"/user/sree/OUT","source":"/user/sree/foo.txt"} 

我發現,我們能夠JSON加載到PigScript。

A = LOAD ‘data.json’ 
USING PigJsonLoader(); 

但如何在Apache的豬解析JSON

--Sampling.pig 
--pig -x mapreduce -f Sampling.pig -param input=foo.csv -param output=OUT/pig -param delimiter="," -param fraction='0.05' 

--Load data 
inputdata = LOAD '$input' using PigStorage('$delimiter'); 

--Group data 
groupedByAll = group inputdata all; 

--output into hdfs 
sampled = SAMPLE inputdata $fraction; 
store sampled into '$output' using PigStorage('$delimiter'); 

以上是我的豬腳本。 如何parse json(每個元素)在Apache pig中? 我需要把上面的json作爲輸入並解析它的source,delimiter,fraction,output並分別通過$input,$delimiter,$fraction,$output

如何解析它。 請建議

回答

0

試試這個:

--Load data 
inputdata = LOAD '/input.txt' using JsonLoader('Name:chararray,elementinfo:(fraction:chararray),destionation:chararray,source:chararray'); 

--Group data 
groupedByAll = group inputdata all; 

store groupedByAll into '/OUT/pig' using PigStorage(','); 

現在你的輸出看起來:在雙引號

all,{(sampling1,(4),/user/sree/OUT1,/user/sree/foo1.txt),(sampling,(3),/user/sree/OUT,/user/sree/foo.txt)} 

在輸入文件中部分數據{"fraction":"3"}。所以我用分數作爲chararray所以不能夠運行示例命令,所以我用上面的腳本來得到結果。

如果要執行樣本操作,將分數數據轉換爲整型,然後您將得到結果。

+0

謝謝MarHserus。但是如何解析這些元素?爲了實現分數和分隔符?我的輸入是:/user/sree/foo.txt –

+0

您期待輸出的格式。 – MarHserus

+0

我期望輸出爲帶分隔符的文件(不是json),它與輸入文件(foo.txt)相同 –