使用elephantbird-PIG读取JSON时出错

使用elephantbird-PIG读取JSON时出错,json,hadoop,apache-pig,Json,Hadoop,Apache Pig,我无法使用ElephantBird和Pig读取JSON文件。我想知道我在哪里犯了错误 数据: 代码: 错误: 输入: 无法从“/user/hdetl/漏斗/uetsample.dat”读取数据 详细错误: 清管器堆迹 --------------- 错误2997:无法从备份中重新创建异常错误:错误:中 org.apache.pig.impl.logicalLayer.FrontendException:错误1066:无法打开别名dat的迭代器。后端错误:无法从后端重新创建异常 ed错误:错误:

我无法使用ElephantBird和Pig读取JSON文件。我想知道我在哪里犯了错误

数据:

代码:

错误:

输入:
无法从“/user/hdetl/漏斗/uetsample.dat”读取数据
详细错误:
清管器堆迹
---------------
错误2997:无法从备份中重新创建异常错误:错误:中
org.apache.pig.impl.logicalLayer.FrontendException:错误1066:无法打开别名dat的迭代器。后端错误:无法从后端重新创建异常
ed错误:错误:在
位于org.apache.pig.PigServer.openIterator(PigServer.java:891)
位于org.apache.pig.tools.grunt.GruntParser.processDump(GruntParser.java:655)
位于org.apache.pig.tools.pigscript.parser.PigScriptParser.parse(PigScriptParser.java:303)
位于org.apache.pig.tools.grunt.GruntParser.parsetoponerror(GruntParser.java:188)
位于org.apache.pig.tools.grunt.GruntParser.parseStopOnError(GruntParser.java:164)
位于org.apache.pig.tools.grunt.grunt.run(grunt.java:69)
位于org.apache.pig.Main.run(Main.java:495)
位于org.apache.pig.Main.Main(Main.java:111)
在sun.reflect.NativeMethodAccessorImpl.invoke0(本机方法)处
位于sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
在sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)中
位于java.lang.reflect.Method.invoke(Method.java:597)
位于org.apache.hadoop.util.RunJar.main(RunJar.java:186)
原因:org.apache.pig.backend.executionengine.ExecuteException:错误2997:无法从备份中重新创建异常错误:错误:中
位于org.apache.pig.backend.hadoop.executionengine.mapReduceLayer.Launcher.getErrorMessages(Launcher.java:221)
位于org.apache.pig.backend.hadoop.executionengine.mapReduceLayer.Launcher.getStats(Launcher.java:151)
位于org.apache.pig.backend.hadoop.executionengine.mapReduceLayer.mapreduceLancher.launchPig(mapreduceLancher.java:344)
位于org.apache.pig.PigServer.launchPlan(PigServer.java:1314)
位于org.apache.pig.PigServer.executeCompiledLogicalPlan(PigServer.java:1299)
位于org.apache.pig.PigServer.storeEx(PigServer.java:996)
位于org.apache.pig.PigServer.store(PigServer.java:963)
位于org.apache.pig.PigServer.openIterator(PigServer.java:876)

我没有使用JSON加载程序,但我认为您应该能够在您的foreach中删除$0。我只是不相信加载器只是将{和}之间的所有内容转换为一个记录(元组)

dat=FOREACH json1生成邮件服务器;
相当老的帖子,但有人可能有类似的问题

我已根据问题中提供的数据创建了输入文件。
我无法加载文件,因为在行中输入了不必要的内容:

"msgid": "WARQZCXAEMSSVWPPOOYZXR
LQIKMFUY.155763@example.com",
但解决这个问题并没有得到预期的结果。 我已经从文件中删除了所有条目,所以最后我只有一行

已加载文件:

dump json1
([time#20:53:00,msgid#WARQZCXAEMSSVWPPOOYZXRLQIKMFUY.155763@example.com,relay#app03.example.com,mailserver#mail5,month#Jul,pid#6229,classnumber#0,day#12,src#info@example.com,sendmailid#p6D0r0u1006229,nrcpts#1,size#57395])
而您的
foreach
工作:

dat   = FOREACH json1 GENERATE $0#'mailserver' AS mailserver;
dump dat

(mail5)

export JAVA_HOME=/usr/JAVA/jdk1.6.0_22 export PIG_CLASSPATH=/etc/hadoop/conf export PATH=$PATH:/local/hdetl/PIG-0.9.2/bin REGISTER/local/hdetl/漏斗/PIG-jars/json-simple-1.1.jar;REGISTER/local/hdetl/漏斗/pig-jars/google-collect-1.0.jar;注册'/local/hdetl/漏斗/pig-jars/elephant-bird-1.2.1-SNAPSHOT.jar';我无法使用elephantbird和PIG读取JSON文件。我想知道哪里出了错。如果你有其他信息(比如问题的实际内容),请更新问题,而不仅仅是把它放在评论中。我现在就把它修好对于那些在这里寻找这篇文章的人来说,这是一个很好的选择。
"msgid": "WARQZCXAEMSSVWPPOOYZXR
LQIKMFUY.155763@example.com",
dump json1
([time#20:53:00,msgid#WARQZCXAEMSSVWPPOOYZXRLQIKMFUY.155763@example.com,relay#app03.example.com,mailserver#mail5,month#Jul,pid#6229,classnumber#0,day#12,src#info@example.com,sendmailid#p6D0r0u1006229,nrcpts#1,size#57395])
dat   = FOREACH json1 GENERATE $0#'mailserver' AS mailserver;
dump dat

(mail5)