我有一个json:
{"Name":"sampling","elementInfo":{"fraction":"3"},"destination":"/user/sree/OUT","source":"/user/sree/foo.txt"}
我发现我们可以将json加载到PigScript中。
A = LOAD ‘data.json’
USING PigJsonLoader();
但是如何在Apache Pig中解析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');
以上是我的猪脚本。如何在Apache猪parse
json(每个元素)?我需要把上面的json作为输入,分别解析它的source,delimiter,fraction,output
和传递$input,$delimiter,$fraction,$output
。
如何解析相同的。请建议
试试这个:
--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"}
双引号。所以我使用分数作为字符,所以不能运行示例命令,所以我使用上面的脚本来获得结果。
如果你想执行示例操作,将分数数据转换为int,然后你将得到结果。