2017-02-06 129 views
0

我試圖解析以下輸入(有2個記錄在該輸入)使用Elephantbird JSON裝載機阿帕奇PIG,ELEPHANTBIRDJSON裝載機

[{ 「node_disk_lnum_1」:36, 「node_disk_xfers_in_rate_sum」:136.40000000000001,」 node_disk_bytes_in_rate_22 「: 187392.0, 」node_disk_lnum_7「:13}]

[{」 node_disk_lnum_1 「:36, 」node_disk_xfers_in_rate_sum「: 105.2,」 node_disk_bytes_in_rate_22" :123084.8, 「node_disk_lnum_7」:13}]

這是我的語法:

register '/home/data/Desktop/elephant-bird-pig-4.1.jar'; 

a = LOAD '/pig/tc1.log' USING 
com.twitter.elephantbird.pig.load.JsonLoader('-nestedLoad') as (json:map[]); 

b = FOREACH a GENERATE flatten(json#'node_disk_lnum_1') AS 
node_disk_lnum_1,flatten(json#'node_disk_xfers_in_rate_sum') AS 
node_disk_xfers_in_rate_sum,flatten(json#'node_disk_bytes_in_rate_22') AS 
node_disk_bytes_in_rate_22, flatten(json#'node_disk_lnum_7') AS 
node_disk_lnum_7; 

DESCRIBE b; 

b描述的結果:

B:{node_disk_lnum_1:字節組,node_disk_xfers_in_rate_sum: 字節組,node_disk_bytes_in_rate_22:字節組,node_disk_lnum_7: 的bytearray}

c = FOREACH b GENERATE node_disk_lnum_1; 

DESCRIBE c; 

C:{node_disk_lnum_1:字節組}

DUMP c; 

預期結果:

36,136.40000000000001,187392.0,13

36,105.2,123084.8,13

投擲下面的錯誤

2017年2月6日01:05:49337 [主要] INFO org.apache.pig.tools.pigstats.ScriptState - 豬在 腳本使用的功能:UNKNOWN 2017- 02-06 01:05:49,386 [main] INFO org.apache.pig.data.SchemaTupleBackend - 密鑰[pig.schematuple]不是 set ...不會生成代碼。 2017年2月6日01:05:49387 [主要] INFO org.apache.pig.newplan.logical.optimizer.LogicalPlanOptimizer - {RULES_ENABLED = [AddForEach,ColumnMapKeyPrune,ConstantCalculator, GroupByConstParallelSetter,LimitOptimizer,LoadTypeCastInserter, MergeFilter, MergeForEach,PartitionFilterOptimizer, PredicatePushdownOptimizer,PushDownForEachFlatten,PushUpFilter, SplitFilter,StreamTypeCastInserter]} 2017年2月6日01:05:49390 [主] INFO org.apache.pig.newplan.logical.rules.ColumnPruneVisitor - 所需的地圖 關鍵對於:$ 0 - > [node_disk_lnum_1, node_disk_xfers_in_rate_sum,node_disk_bytes_in_rate_22, node_disk_lnum_7]

2017-02-06 01:05:49,395 [main] INFO org.apache.pig.backend.hadoop.executionengine.mapReduceLayer.MRCompiler - 文件連接閾值:100樂觀?假2017-02-06 01:05:49,398 [main] INFO org.apache.pig.backend。hadoop.executionengine.mapReduceLayer.MultiQueryOptimizer - 優化前的MR計劃大小:1 2017-02-06 01:05:49,398 [main] INFO org.apache.pig.backend.hadoop.executionengine.mapReduceLayer.MultiQueryOptimizer - MR plan大小優化後:1 2017-02-06 01:05:49,425 [main] INFO org.apache.pig.tools.pigstats.mapreduce.MRScriptState - 豬 腳本設置被添加到作業2017-02-06 01:05 :49,426 [main] INFO org.apache.pig.backend.hadoop.executionengine.mapReduceLayer.JobControlCompiler - mapred.job.reduce.markreset.buffer.percent未設置,默認設置爲0.3 2017-02-06 01 :05:49,428 [main]錯誤 org.apache.pig.tools.grunt.Grunt - 錯誤2998:未處理的內部 錯誤。 com/twitter/elephantbird/util/HadoopCompat

請幫助我失去了什麼?

回答

0

你不必在你的JSON任何嵌套的數據,因此將其刪除-nestedload

a = LOAD '/pig/tc1.log' USING com.twitter.elephantbird.pig.load.JsonLoader() as (json:map[]); 
+0

感謝您的解決方案:) @inquisitive_mind –