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可以很好地工作。可能是虫子?