2017-09-07 19 views
0

RCFileからデータを読み込む単純なマップリダクションコードを実行しようとしています。java.lang.ClassNotFoundExceptionを取り除くことはできません:クラスorg.apache.hadoop.hive.ql.io.RCFileInputFormat

私はHadoopのコマンドを使用してコードを実行している:、Hadoopのクラスパスにハイブ-execのjarファイルを追加し、このエラーを取得する

hadoop jar MRJobRCFile.jar MRJobRCFile <inputRCfile> <outputfile> 

Inspite。

export HADOOP_CLASSPATH=/opt/cmr/hadoopinstall/hive-0.10.0-cdh4.4.0/lib/hive-exec-0.10.0-cdh4.4.0.jar 

他にどのようにjarファイルを追加できますか?

は冗長使用して、JVMにロードされたjarファイルをチェックしようとしました:クラス:

[ファイルからロードorg.apache.hadoop.hive.ql.io.RCFileInputFormat:/opt/cmr/hadoopinstall/hive-0.10.0を-cdh4.4.0/lib/hive-exec-0.10.0-cdh4.4.0.jar]

RCFileInputFormatがJVMによってロードされています。

この問題をどのように進めるか考えてください。エラー:

java.lang.RuntimeException: java.lang.RuntimeException: java.lang.ClassNotFoundException: Class org.apache.hadoop.hive.ql.io.RCFileInputFormat not found 
at org.apache.hadoop.conf.Configuration.getClass(Configuration.java:1649) 
at org.apache.hadoop.mapred.JobConf.getInputFormat(JobConf.java:620) 
at org.apache.hadoop.mapred.MapTask.runOldMapper(MapTask.java:394) 
at org.apache.hadoop.mapred.MapTask.run(MapTask.java:332) 
at org.apache.hadoop.mapred.Child$4.run(Child.java:268) 
at java.security.AccessController.doPrivileged(Native Method) 
at javax.security.auth.Subject.doAs(Subject.java:415) 
at org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1408) 
at org.apache.hadoop.mapred.Child.main(Child.java:262) 
Caused by: java.lang.RuntimeException: java.lang.ClassNotFoundException: Class org.apache.hadoop.hive.ql.io.RCFileInputFormat not found 
    at org.apache.hadoop.conf.Configuration.getClass(Configuration.java:1617) 
    at org.apache.hadoop.conf.Configuration.getClass(Configuration.java 
+0

jarファイルはclouderaのハイブジャーですが、パスはapacheハイブからのものです。どのjarがコンパイル時に依存関係を定義しているか確認できますか? –

+0

@PreetiKhurana:hive-execをHADOOP_CLASSPATHに追加するだけでなく、分散キャッシュにjarファイルを追加することで、この問題を解決しました。 –

答えて

0

HADOOP_CLASSPATHおよび分散キャッシュにhive-exec jarを追加することで解決しました。

jarを分散キャッシュに追加すると、リモートマップでJarファイルを利用できるようになり、タスクJVMが削減されます。 HADOOP_CLASSPATHでの追加は、クライアントJVM(hadoop jarコマンドで作成)用です。

関連する問題