Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/apache-spark/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Apache spark 从Spark Streaming中的Kafka主题创建两个数据流无效_Apache Spark_Apache Kafka_Spark Streaming - Fatal编程技术网

Apache spark 从Spark Streaming中的Kafka主题创建两个数据流无效

Apache spark 从Spark Streaming中的Kafka主题创建两个数据流无效,apache-spark,apache-kafka,spark-streaming,Apache Spark,Apache Kafka,Spark Streaming,在我的spark流媒体应用程序中。我正在从两个卡夫卡主题创建两个数据流。我这样做是因为我需要以不同的方式处理这两个数据流。下面是代码示例: object KafkaConsumerTest3 { var sc:SparkContext = null def main(args: Array[String]) { Logger.getLogger("org").setLevel(Level.OFF); Logger.getLogger("akka").setLevel

在我的spark流媒体应用程序中。我正在从两个卡夫卡主题创建两个数据流。我这样做是因为我需要以不同的方式处理这两个数据流。下面是代码示例:

object KafkaConsumerTest3 {
  var sc:SparkContext = null
  def main(args: Array[String]) {



    Logger.getLogger("org").setLevel(Level.OFF);
    Logger.getLogger("akka").setLevel(Level.OFF);

    val Array(zkQuorum, group, topics1, topics2, numThreads) = Array("localhost:2181", "group3", "test_topic4", "test_topic5","5")
    val sparkConf = new SparkConf().setAppName("SparkConsumer").setMaster("local[2]")
    sc = new SparkContext(sparkConf)
    val ssc = new StreamingContext(sc, Seconds(2))


    val topicMap1 = topics1.split(",").map((_, numThreads.toInt)).toMap
    val topicMap2 = topics2.split(",").map((_, numThreads.toInt)).toMap

    val lines2 = KafkaUtils.createStream(ssc, zkQuorum, group, topicMap2).map(_._2)
    val lines1 = KafkaUtils.createStream(ssc, zkQuorum, group, topicMap1).map(_._2)

    lines2.foreachRDD{rdd =>
      rdd.foreach { println }}

    lines1.foreachRDD{rdd =>
      rdd.foreach { println }}

    ssc.start()
    ssc.awaitTermination()
  }
}
这两个主题可能有数据,也可能没有数据。在我的例子中,第一个主题当前没有获取数据,但第二个主题是获取数据。但是我的spark应用程序没有打印任何数据。也不例外。
我有什么遗漏吗?或者如何解决此问题。

通过上述代码发现问题。问题是我们使用master作为本地[2],并且注册了两个接收器。增加线程数可以解决问题。

它对一个流有效吗?是的。。它只适用于一个流。@Alok:您能试着在foreachRDD方法中打印rdd.count吗??