【发布时间】:2015-12-15 13:17:04
【问题描述】:
我编写了简单的 pig 脚本来从 hive 表中读取数据。
A = LOAD 'default.movie' USING org.apache.hive.hcatalog.pig.HCatLoader();
DUMP A;
当我通过 hue pig 用户界面运行时,它正在工作。但它使用标志useHCatalog。
当我使用命令行使用相同的标志运行它时,它正在工作
pig -useHCatalog sample.pig
但是我如何在没有这个标志的情况下通过在 pig 脚本中提供所需的 jar 文件和配置来运行。我试过这个。但是不行
REGISTER /usr/lib/hive/lib/*.jar
REGISTER /usr/lib/hive-hcatalog/share/hcatalog/*.jar
REGISTER /usr/lib/hive-hcatalog/share/hcatalog/storage-handlers/hbase/lib/*.jar
当我在没有标志的情况下运行时会引发错误
2015-12-15 05:05:55,379 [main] 错误 org.apache.pig.PigServer - 解析时异常:解析时出错。找不到表: 未找到 default.movie 表解析失败:无法检索架构 来自加载程序 org.apache.hive.hcatalog.pig.HCatLoader@25bdba7a 在 org.apache.pig.parser.QueryParserDriver.parse(QueryParserDriver.java:198) 在 org.apache.pig.PigServer$Graph.parseQuery(PigServer.java:1678) 在 org.apache.pig.PigServer$Graph.access$000(PigServer.java:1411) 在 org.apache.pig.PigServer.parseAndBuild(PigServer.java:344) 在 org.apache.pig.PigServer.executeBatch(PigServer.java:369) 在 org.apache.pig.PigServer.executeBatch(PigServer.java:355) 在 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)
我只想知道,useHCatalog 标志后面是什么。我必须注册什么才能正常工作?
【问题讨论】:
-
上次我使用 pig 和 hive,我什至没有使用 flag,它无需手动注册任何东西就可以工作......
-
无论如何,您的错误显示“未找到表”,看起来 HCatLoader 加载正确,否则您会收到不同的错误,说明在类路径中找不到它。
标签: hadoop hive apache-pig