[HADOOP] 돼지를 사용하는 CDH4 Hbase ERROR 2998 java.lang.NoClassDefFoundError : org / apache / hadoop / hbase / filter / Filter
HADOOP돼지를 사용하는 CDH4 Hbase ERROR 2998 java.lang.NoClassDefFoundError : org / apache / hadoop / hbase / filter / Filter
의사 배포 모드에서 CDH4를 사용하고 있는데 HBase와 Pig를 함께 사용하는 데 문제가 있습니다 (그러나 둘 다 잘 작동합니다).
나는이 훌륭한 튜토리얼을 단계별로 따라하고있다. http://blog.whitepages.com/2011/10/27/hbase-storage-and-pig/
돼지 스크립트는 이렇게 보입니다.
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');
그러나 다음 명령을 입력하면
pig -x local hbase_sample.pig
다음 오류 메시지가 표시됩니다.
ERROR org.apache.pig.tools.grunt.Grunt - ERROR 2998: Unhandled internal error. org/apache/hadoop/hbase/filter/Filter
내가 온라인에서 발견 한 주된 이유는 classpath 일 것이므로, 현재 구성의 목록이있다. 어쩌면 내 구성에서 말도 안되는 것을 찾을 수있을 것이다.
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"
더 자세한 정보가 필요하다면 여기에 완전한 돼지 더미 추적이 있습니다 :
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
================================================================================
해결법
-
==============================
1.PIG_CLASSPATH가 잘못되었습니다. 다음과 같이 보일 것입니다 :
PIG_CLASSPATH가 잘못되었습니다. 다음과 같이 보일 것입니다 :
export PIG_CLASSPATH=”`hbase classpath`:$PIG_CLASSPATH”
이렇게하면 누락 된 hbase 관련 jar 파일이 클래스 경로에 Pig에 추가됩니다.
from https://stackoverflow.com/questions/14402206/cdh4-hbase-using-pig-error-2998-java-lang-noclassdeffounderror-org-apache-hadoo by cc-by-sa and MIT license
'HADOOP' 카테고리의 다른 글
[HADOOP] 기존 필드에 의한 파티션 하이브 테이블? (0) | 2019.06.10 |
---|---|
[HADOOP] 루트 스크래치 디렉토리 : HDFS의 / tmp / hive는 쓰기 가능해야합니다. 현재 사용 권한은 다음과 같습니다. -wx ------ (0) | 2019.06.10 |
[HADOOP] hadoop의 mapreduce.fileoutputcommitter.marksuccessfuljobs를 oozie보다 우선합니다. (0) | 2019.06.10 |
[HADOOP] 하이브 : 배열 <string>을 배열 <int>에 캐스팅합니다. (0) | 2019.06.10 |
[HADOOP] Spark의 원시 바이트 배열 쓰기 및 읽기 - 시퀀스 파일 SequenceFile 사용 (0) | 2019.06.10 |