Apache pig 如何在pig中加载带有空字段的分隔文件
我正在使用下面的命令加载文件,当我尝试转储或演示加载的数据时,它失败,出现以下错误。我已经检查了数据的完整性,每一行都包含正确数量的分隔符,但是当字段为空时,紧接着是分隔符,我尝试加载下面的单个示例行。它不起作用Apache pig 如何在pig中加载带有空字段的分隔文件,apache-pig,Apache Pig,我正在使用下面的命令加载文件,当我尝试转储或演示加载的数据时,它失败,出现以下错误。我已经检查了数据的完整性,每一行都包含正确数量的分隔符,但是当字段为空时,紧接着是分隔符,我尝试加载下面的单个示例行。它不起作用 hs_2_inr = LOAD 'hs_2_inr.dat' USING PigStorage('^') as ( year:chararray, country:chararray, s_no:chararray, hs_8:chararray, hs_8_desc:chararra
hs_2_inr = LOAD 'hs_2_inr.dat' USING PigStorage('^') as ( year:chararray, country:chararray, s_no:chararray, hs_8:chararray, hs_8_desc:chararray, prevyr_inr:chararray, curyr_inr:chararray, growth:chararray, dummy:chararray);
下面是示例数据
1997^BOTSWANA^1.^10063001^*RICE PARBOILED^^2.43^^
以下是例外
2013-06-30 21:02:23,015 [main] ERROR org.apache.pig.pen.AugmentBaseDataVisitor - No (valid) input data found!
java.lang.RuntimeException: No (valid) input data found!
at org.apache.pig.pen.AugmentBaseDataVisitor.visit(AugmentBaseDataVisitor.java:583)
at org.apache.pig.newplan.logical.relational.LOLoad.accept(LOLoad.java:229)
at org.apache.pig.pen.util.PreOrderDepthFirstWalker.depthFirst(PreOrderDepthFirstWalker.java:82)
at org.apache.pig.pen.util.PreOrderDepthFirstWalker.depthFirst(PreOrderDepthFirstWalker.java:84)
at org.apache.pig.pen.util.PreOrderDepthFirstWalker.walk(PreOrderDepthFirstWalker.java:66)
at org.apache.pig.newplan.PlanVisitor.visit(PlanVisitor.java:52)
at org.apache.pig.pen.ExampleGenerator.getExamples(ExampleGenerator.java:180)
at org.apache.pig.PigServer.getExamples(PigServer.java:1180)
at org.apache.pig.tools.grunt.GruntParser.processIllustrate(GruntParser.java:739)
at org.apache.pig.tools.pigscript.parser.PigScriptParser.Illustrate(PigScriptParser.java:626)
at org.apache.pig.tools.pigscript.parser.PigScriptParser.parse(PigScriptParser.java:323)
at org.apache.pig.tools.grunt.GruntParser.parseStopOnError(GruntParser.java:194)
at org.apache.pig.tools.grunt.GruntParser.parseStopOnError(GruntParser.java:170)
at org.apache.pig.tools.grunt.Grunt.run(Grunt.java:69)
at org.apache.pig.Main.run(Main.java:538)
at org.apache.pig.Main.main(Main.java:157)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at org.apache.hadoop.util.RunJar.main(RunJar.java:156)
2013-06-30 21:02:23,016 [main] ERROR org.apache.pig.tools.grunt.Grunt - ERROR 2997: Encountered IOException. Exception
那么,如何在pig中加载一个包含空字段的文件呢?您的代码运行良好。正如您在评论中提到的,
说明
是您的问题。根据说明,说明
有一段时间没有维护。不要依赖它。无论如何,在任何非诊断代码中都不需要它。改用描述
在中,说明
上的警告似乎已经消失,因此可能再次安全,但我仍然更依赖描述
来避免潜在问题的来源。在我正在使用的Pig 0.10中,图解
仍然给了我与您收到的相同的错误。您的代码工作正常。正如您在评论中提到的,说明
是您的问题。根据说明,说明
有一段时间没有维护。不要依赖它。无论如何,在任何非诊断代码中都不需要它。改用描述
在中,说明
上的警告似乎已经消失,因此可能再次安全,但我仍然更依赖描述
来避免潜在问题的来源。在我正在使用的Pig 0.10中,图解
仍然给了我与您收到的错误相同的错误。刚刚发现图解是罪魁祸首,如果我先运行图解,它也会破坏转储。然而,运行DUMP而不运行example可以很好地工作。可能是一个bug?刚刚发现,说明是罪魁祸首,如果我先运行说明,它也会破坏转储。然而,运行DUMP而不运行example可以很好地工作。可能是虫子?