使用Pig ERROR 2998的CDH4 Hbase java.lang.NoClassDefFoundError:org / apache / hadoop / hbase / filter / Filter [英] CDH4 Hbase using Pig ERROR 2998 java.lang.NoClassDefFoundError: org/apache/hadoop/hbase/filter/Filter
问题描述
我在伪分布式模式下使用CDH4,并且与HBase和Pig一起工作时遇到了一些麻烦(但两者都可以正常工作)。
我正在关注一步一步这个很好的教程:http://blog.whitepages。因此,我的猪脚本看起来像这样 $ b $ / $ / $>
b
注册/usr/lib/zookeeper/zookeeper-3.4.3-cdh4.1.2.jar
注册/ usr / lib / hbase / hbase- 0.92.1-cdh4.1.2-security.jar
register /usr/lib/hbase/lib/guava-11.0.2.jar
raw_data = LOAD'input.csv'使用PigStorage (',')AS(
listing_id:chararray,
fname:chararray,
lname:chararray);
STORE raw_data INTO'hbase:// sample_names'USING org.apache.pig.backend.hadoop.hbase.HBaseStorage('info:fname info:lname');
但是在输入以下命令时:
pig -x local hbase_sample.pig
我收到以下错误消息
ERROR org.apache.pig.tools.grunt.Grunt - 错误2998:未处理的内部错误。 org / apache / hadoop / hbase / filter / Filter
我在网上找到的主要原因是类路径,所以这是一个当前配置的列表,也许你在我的配置中发现了一些废话:
$ export $ HADOOP_HOME = / usr / lib / hadoop
export HADOOP_MAPRED_HOME = / usr / lib / hadoop-mapreduce $ b $ export HADOOP_CONF_DIR = / etc / hadoop / conf
export HBASE_HOME = / usr / lib / hbase $ b $ export HBASE_CONF_DIR = / etc / hbase / conf $ b $ export PIG_HOME = / usr / lib / pig
export PIG_CONF_DIR = / etc / pig / conf
$ b export PATH =$ HADOOP_HOME / bin:$ HBASE_HOME / bin:$ HADOOP_MAPRED_HOME / bin:$ PIG_HOME / bin:$ PATH
export HADOOP_CLASSPATH =$ HBASE_HOME / bin
export PIG_CLASSPATH =$ HBASE_HOME / bin:$ PIG_HOME / bin
如果您需要更多详细信息,请参阅完整的猪堆跟踪:
猪堆栈跟踪
---------------
错误2998:未处理的内部错误。 org / apache / hadoop / hbase / filter /过滤$ b $ java.util.Class.forName0(Native方法)
在java.lang.Class.forName(Class.java:247)
在org.apache.pig.impl.PigContext.resolveClassName(PigContext.java:478)
在org .apache.pig.impl.PigContext.instantiateFuncFromSpec(PigContext.java:508)
at org.apache.pig.parser.LogicalPlanBuilder.validateFuncSpec(LogicalPlanBuilder.java:791)
at org.apache.pig .parser.LogicalPlanBuilder.buildFuncSpec(LogicalPlanBuilder.java:780)
at org.apache.pig.parser.LogicalPlanGenerator.func_clause(LogicalPlanGenerator.java:4583)
at org.apache.pig.parser.LogicalPlanGenerator .store_clause(LogicalPlanGenerator.java:6225)
at org.apache.pig.parser.LogicalPlanGenerator.op_clause(LogicalPlanGenerator.java:1335)
at org.apache.pig.parser.LogicalPlanGenerator.general_statement(LogicalPlanGenerator .java:789)
at o rg.apache.pig.parser.LogicalPlanGenerator.statement(LogicalPlanGenerator.java:507)
处org.apache org.apache.pig.parser.LogicalPlanGenerator.query(LogicalPlanGenerator.java:382)
。 pig.parser.QueryParserDriver.parse(QueryParserDriver.java:175)
at org.apache.pig.PigServer $ Graph.parseQuery(PigServer.java:1594)
at org.apache.pig.PigServer $ Graph.registerQuery(PigServer.java:1545)
at org.apache.pig.PigServer.registerQuery(PigServer.java:545)
at org.apache.pig.tools.grunt.GruntParser.processPig( GruntParser.java:970)
处org.apache.pig.tools.grunt.GruntParser org.apache.pig.tools.pigscript.parser.PigScriptParser.parse(PigScriptParser.java:386)
。 parseStopOnError(GruntParser.java:189)
处org.apache.pig.tools.grunt.Grunt org.apache.pig.tools.grunt.GruntParser.parseStopOnError(GruntParser.java:165)
。 exec(Grunt.java:84)
在org.apache.pig.Main.run(Main.java:430)
在org.apache.pig.Main.main(在sun.reflect.NativeMethodAccessorImpl.invoke Main.java:111)
在sun.reflect.NativeMethodAccessorImpl.invoke0(本机方法)
(NativeMethodAccessorImpl.java:39)
。在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:208)
导致:java.lang.ClassNotFoundException:org.apache.hadoop.hbase.filter.Filter $ b $ java.net.URLClassLoader $ 1.run(URLClassLoader.java:202)
。在java.security.AccessController.doPrivileged(本机方法)
在java.net.URLClassLoader.findClass(URLClassLoader.java:190)
在java.lang.ClassLoader.loadClass(ClassLoader.java:
at sun.misc.Launcher $ AppClassLoader.loadClass(Launcher.java:301)
at java.lang.ClassLoader.loadClass(ClassLoader.java:247)
... 28更多
============================================= ========================== =========
code> PIG_CLASSPATH 是错误的,它应该如下所示:
export PIG_CLASSPATH = `hbase classpath`:$ PIG_CLASSPATH
这会将缺少的hbase相关jar添加到你的classpath为猪。
I am using CDH4 in a pseudo-distributed mode and I have some trouble working with HBase and Pig together (but both work fine alone).
I am following step by step this nice tutorial: http://blog.whitepages.com/2011/10/27/hbase-storage-and-pig/
So my Pig-script looks like this
register /usr/lib/zookeeper/zookeeper-3.4.3-cdh4.1.2.jar
register /usr/lib/hbase/hbase-0.92.1-cdh4.1.2-security.jar
register /usr/lib/hbase/lib/guava-11.0.2.jar
raw_data = LOAD 'input.csv' USING PigStorage( ',' ) AS (
listing_id: chararray,
fname: chararray,
lname: chararray );
STORE raw_data INTO 'hbase://sample_names' USING org.apache.pig.backend.hadoop.hbase.HBaseStorage ('info:fname info:lname');
But upon entering following command
pig -x local hbase_sample.pig
I get following error message
ERROR org.apache.pig.tools.grunt.Grunt - ERROR 2998: Unhandled internal error. org/apache/hadoop/hbase/filter/Filter
Main reason I found online would be the classpaths, so here's a list of the current configuration, maybe you find some nonsense in my configuration:
export HADOOP_HOME=/usr/lib/hadoop
export HADOOP_MAPRED_HOME=/usr/lib/hadoop-mapreduce
export HADOOP_CONF_DIR=/etc/hadoop/conf
export HBASE_HOME=/usr/lib/hbase
export HBASE_CONF_DIR=/etc/hbase/conf
export PIG_HOME=/usr/lib/pig
export PIG_CONF_DIR=/etc/pig/conf
export PATH="$HADOOP_HOME/bin:$HBASE_HOME/bin:$HADOOP_MAPRED_HOME/bin:$PIG_HOME/bin:$PATH"
export HADOOP_CLASSPATH="$HBASE_HOME/bin"
export PIG_CLASSPATH="$HBASE_HOME/bin:$PIG_HOME/bin"
If you need more details, here's the complete pig stack trace:
Pig Stack Trace
---------------
ERROR 2998: Unhandled internal error. org/apache/hadoop/hbase/filter/Filter
java.lang.NoClassDefFoundError: org/apache/hadoop/hbase/filter/Filter
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Class.java:247)
at org.apache.pig.impl.PigContext.resolveClassName(PigContext.java:478)
at org.apache.pig.impl.PigContext.instantiateFuncFromSpec(PigContext.java:508)
at org.apache.pig.parser.LogicalPlanBuilder.validateFuncSpec(LogicalPlanBuilder.java:791)
at org.apache.pig.parser.LogicalPlanBuilder.buildFuncSpec(LogicalPlanBuilder.java:780)
at org.apache.pig.parser.LogicalPlanGenerator.func_clause(LogicalPlanGenerator.java:4583)
at org.apache.pig.parser.LogicalPlanGenerator.store_clause(LogicalPlanGenerator.java:6225)
at org.apache.pig.parser.LogicalPlanGenerator.op_clause(LogicalPlanGenerator.java:1335)
at org.apache.pig.parser.LogicalPlanGenerator.general_statement(LogicalPlanGenerator.java:789)
at org.apache.pig.parser.LogicalPlanGenerator.statement(LogicalPlanGenerator.java:507)
at org.apache.pig.parser.LogicalPlanGenerator.query(LogicalPlanGenerator.java:382)
at org.apache.pig.parser.QueryParserDriver.parse(QueryParserDriver.java:175)
at org.apache.pig.PigServer$Graph.parseQuery(PigServer.java:1594)
at org.apache.pig.PigServer$Graph.registerQuery(PigServer.java:1545)
at org.apache.pig.PigServer.registerQuery(PigServer.java:545)
at org.apache.pig.tools.grunt.GruntParser.processPig(GruntParser.java:970)
at org.apache.pig.tools.pigscript.parser.PigScriptParser.parse(PigScriptParser.java:386)
at org.apache.pig.tools.grunt.GruntParser.parseStopOnError(GruntParser.java:189)
at org.apache.pig.tools.grunt.GruntParser.parseStopOnError(GruntParser.java:165)
at org.apache.pig.tools.grunt.Grunt.exec(Grunt.java:84)
at org.apache.pig.Main.run(Main.java:430)
at org.apache.pig.Main.main(Main.java:111)
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:208)
Caused by: java.lang.ClassNotFoundException: org.apache.hadoop.hbase.filter.Filter
at java.net.URLClassLoader$1.run(URLClassLoader.java:202)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:190)
at java.lang.ClassLoader.loadClass(ClassLoader.java:306)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301)
at java.lang.ClassLoader.loadClass(ClassLoader.java:247)
... 28 more
================================================================================
Your PIG_CLASSPATH
is wrong, it should look like the following:
export PIG_CLASSPATH="`hbase classpath`:$PIG_CLASSPATH"
This will add your missing hbase-related jars to your classpath for Pig.
这篇关于使用Pig ERROR 2998的CDH4 Hbase java.lang.NoClassDefFoundError:org / apache / hadoop / hbase / filter / Filter的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!