如何使用储钱罐删除标题?

Posted

技术标签:

【中文标题】如何使用储钱罐删除标题?【英文标题】:how to remove headers using piggybank? 【发布时间】:2016-09-13 21:21:32 【问题描述】:

我有一个包含 10 个文件的目录,我想从目录中存在的文件中删除标题,并且在使用 piggybank 执行时,我收到了一个错误。有没有其他方法可以从目录中存在的所有文件中删除标题。我的代码是:-

REGISTER /usr/lib/pig/piggybank.jar;
input = LOAD 'insurance_data' using CSVExcelStorage(
    ',','default','NOCHANGE','SKIP_INPUT_HEADER')
as (population:int, private:int,public:int,uninsecured:int);
dump input;

我得到的错误是:-

2016-09-13 14:01:48,239 [主要] 错误 org.apache.pig.PigServer - 解析时异常:解析时出错。预期 EOF 的不匹配输入“输入”无法解析: 不匹配的输入“输入”期望 EOF 在 org.apache.pig.parser.QueryParserDriver.parse(QueryParserDriver.java:241) 在 org.apache.pig.parser.QueryParserDriver.parse(QueryParserDriver.java:179) 在 org.apache.pig.PigServer$Graph.parseQuery(PigServer.java:1688) 在 org.apache.pig.PigServer$Graph.access$000(PigServer.java:1421) 在 org.apache.pig.PigServer.parseAndBuild(PigServer.java:354) 在 org.apache.pig.PigServer.executeBatch(PigServer.java:379) 在 org.apache.pig.PigServer.executeBatch(PigServer.java:365) 在 org.apache.pig.tools.grunt.GruntParser.executeBatch(GruntParser.java:140) 在 org.apache.pig.tools.grunt.GruntParser.processDump(GruntParser.java:769) 在 org.apache.pig.tools.pigscript.parser.PigScriptParser.parse(PigScriptParser.java:372) 在 org.apache.pig.tools.grunt.GruntParser.parseStopOnError(GruntParser.java:198) 在 org.apache.pig.tools.grunt.GruntParser.parseStopOnError(GruntParser.java:173) 在 org.apache.pig.tools.grunt.Grunt.exec(Grunt.java:84) 在 org.apache.pig.Main.run(Main.java:613) 在 org.apache.pig.Main.main(Main.java:158) 在 sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 在 sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) 在 sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 在 java.lang.reflect.Method.invoke(Method.java:606) 在 org.apache.hadoop.util.RunJar.run(RunJar.java:221) 在 org.apache.hadoop.util.RunJar.main(RunJar.java:136) 2016-09-13 14:01:48,250 [main] 错误 org.apache.pig.tools.grunt.Grunt - 错误 1200: 输入'输入'不匹配 期待日志文件中的 EOF 详细信息:/home/cloudera/pig_1473800504430.log

【问题讨论】:

【参考方案1】:

'input' 是一个关键字。参考here。将关系'input' 的名称更改为其他名称。

REGISTER /usr/lib/pig/piggybank.jar;
A = LOAD 'insurance_data' USING CSVExcelStorage(',','default','NOCHANGE','SKIP_INPUT_HEADER') as (population:int, private:int,public:int,uninsecured:int);
DUMP A;

【讨论】:

还是不行。我收到一个错误:- 2016-09-13 15:57:21,663 [main] ERROR org.apache.pig.PigServer - 解析期间出现异常:解析期间出错。无法使用导入解析 CSVExcelStorage:[, java.lang., org.apache.pig.builtin., org.apache.pig.impl.builtin.] 解析失败:Pig 脚本解析失败: 你有 piggybank.jar 在以下位置 /usr/lib/pig/ 吗?该错误意味着CSVExcelStorage函数更可能由于无法注册jar文件而得到解决。 是的,你说得对,我在 piggy.jar 中注册时出错,但我在这个位置有 biggybank。我不知道为什么它显示错误 Insurance_data 是目录还是文件?指定目录的完整路径。

以上是关于如何使用储钱罐删除标题?的主要内容,如果未能解决你的问题,请参考以下文章

HDU1114

Piggy-Bank HDU - 1114

[POI2005]SKA-Piggy Banks

Piggy-Bank(复习完全背包)

无法构建 piggybank -> /home/build/ivy/lib 不存在

背包算法变量