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
jarファイルはclouderaのハイブジャーですが、パスはapacheハイブからのものです。どのjarがコンパイル時に依存関係を定義しているか確認できますか? –
@PreetiKhurana:hive-execをHADOOP_CLASSPATHに追加するだけでなく、分散キャッシュにjarファイルを追加することで、この問題を解決しました。 –