1

当尝试从 Zeppelin 中的 Spark 写入 HDFS 时,我收到以下ClassNotFoundException信息org.apache.hadoop.mapred.DirectFileOutputCommitter

java.lang.RuntimeException: java.lang.RuntimeException:    java.lang.ClassNotFoundException: Class org.apache.hadoop.mapred.DirectFileOutputCommitter not found
at org.apache.hadoop.conf.Configuration.getClass(Configuration.java:2106)
at org.apache.hadoop.mapred.JobConf.getOutputCommitter(JobConf.java:725)
at org.apache.spark.rdd.PairRDDFunctions$$anonfun$saveAsHadoopFile$4.apply$mcV$sp(PairRDDFunctions.scala:983)

试图运行的代码:

val model = LinearRegressionWithSGD.train(someRDD, numIterations)
val modelPath = "hdfs:///some_path/LinearRegressionWithSGD"
model.save(sc, modelPath)

在搜索这个类时,我什至找不到它。我能找到的最接近的是Hadoop 中的 org.apache.hadoop.mapred.FileOutputCommitter

我正在使用Zeppelin18c8c9ea512a0d87699a73e2ca26192d03748661的提交(10 月 9 日)、YARN 上的 Spark 1.5.0 和 Hadoop 2.6。

4

1 回答 1

0

我有同样的问题。在“hadoop-mapreduce-client-core.XXXjar”中查找该文件,但在 jar 中找不到该文件。

我通过添加org.apache.hadoop.mapred.DirectFileOutputCommitter到我的存储库来解决问题。该文件的来源可在此处找到:https ://gist.github.com/apivovarov

尚不确定此问题的根本原因是什么。深入研究它。一旦我得到答案,将在这里更新。

于 2016-03-06T10:09:17.100 回答