Kafka-Spark集群的ClassNotFoundException

时间:2016-12-21 13:40:23

标签: scala apache-spark apache-kafka spark-streaming

我试图运行scala-Spark 2.0.2中创建的.jar文件。在我的Spark-Kafka集群中。代码在这里:

import java.util.HashMap



import org.apache.kafka.clients.producer.{KafkaProducer,ProducerConfig}
   import org.apache.spark.SparkConf
   import org.apache.spark.streaming._
   import org.apache.spark.streaming.kafka._

object sparkKafka{
  def main(args: Array[String]): Unit = {
    if(args.length < 4){
      System.err.println("Usage: sparkKafka <zkQuorum><group> <topics> <numThreads>")
      System.exit(1)
    }

val Array(zkQuorum, group, topics, numThreads) = args
val sparkConf = new SparkConf()
    .setAppName("sparkKafka")
val ssc = new StreamingContext(sparkConf, Seconds(2))
ssc.checkpoint("E:/temp/")

val topicMap = topics.split(",").map((_, numThreads.toInt)).toMap
val lines = KafkaUtils.createStream(ssc, zkQuorum, group, topicMap).map(_._2)
val words = lines.flatMap(_.split(" "))
val wordsCounts = words.map(x => (x, 1L))
    .reduceByKeyAndWindow(_ + _, _ - _, Minutes(10), Seconds(2), 2)
wordsCounts.print()

ssc.start()
ssc.awaitTermination()

}

}

我构建了名为: kafka-spark.jar 的.jar文件,并将其scp-it添加到 spark2 文件夹中的节点,以便它可以读取它。 之后我开始编写脚本:

bin/spark-submit  --class "sparkKafka" --master local[4] kafka-spark.jar hdp2.local:2181 group1 Topic-example 1 -verbose

我得到的错误就像在主题的头部说的那样,或者是ClassNotFoundException:sparkKafka

[root@hdp2 spark2]# bin/spark-submit  --class "sparkKafka" --master local[4] kafka-spark.jar hdp2.local:2181 group1 Topic-example 1 -verbose
java.lang.ClassNotFoundException: sparkKafka
        at java.net.URLClassLoader.findClass(URLClassLoader.java:381)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
        at java.lang.Class.forName0(Native Method)
        at java.lang.Class.forName(Class.java:348)
        at org.apache.spark.util.Utils$.classForName(Utils.scala:225)
        at org.apache.spark.deploy.SparkSubmit$.org$apache$spark$deploy$SparkSubmit$$runMain(SparkSubmit.scala:686)
        at org.apache.spark.deploy.SparkSubmit$.doRunMain$1(SparkSubmit.scala:185)
        at org.apache.spark.deploy.SparkSubmit$.submit(SparkSubmit.scala:210)
        at org.apache.spark.deploy.SparkSubmit$.main(SparkSubmit.scala:124)
        at org.apache.spark.deploy.SparkSubmit.main(SparkSubmit.scala)

我在哪里弄错了?此外,我尝试使用完整路径到我的jar文件,但是我发现没有找到.jar或上面的错误。我也试过没有 -v ,但我认为它没有任何区别。 如果有人知道问题出在哪里会很棒。谢谢!

2 个答案:

答案 0 :(得分:0)

您是否尝试过这样称呼

bin/spark-submit  --class "sparkKafka" --master local[4] kafka-spark.jar hdp2.local:2181 group1 Topic-example 1 -verbose

如果这不起作用,您可能需要提取kafka-spark.jar的内容并检查它是否实际包含sparkKafka类。

答案 1 :(得分:0)

你在sparkKafka.scala中添加包的Hava?