Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/apache-kafka/3.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 阅读多个主题_Apache Spark_Apache Kafka_Spark Streaming - Fatal编程技术网

Apache spark 阅读多个主题

Apache spark 阅读多个主题,apache-spark,apache-kafka,spark-streaming,Apache Spark,Apache Kafka,Spark Streaming,我正在尝试开发一个应用程序,它从kafka服务器获取四个不同的主题,并对每个主题采取特定的操作 我创建了一个类,该类接收一个数据流,并有一个方法可以转换该数据流 例如,处理程序类: class StreamHandler(stream:DStream[String]) { val stream:DStream[String] = stream def doActions():DStream[String] = { //Do smth. to DStream } } 现在

我正在尝试开发一个应用程序,它从kafka服务器获取四个不同的主题,并对每个主题采取特定的操作

我创建了一个类,该类接收一个数据流,并有一个方法可以转换该数据流

例如,处理程序类:

class StreamHandler(stream:DStream[String]) {
  val stream:DStream[String] = stream

  def doActions():DStream[String] =  {
    //Do smth. to DStream
  }
}
现在,假设我从主类为我想要的每个处理程序类调用doActions(),它会在每个到达的数据流中重复还是只重复一次

val topicHandler1 = new StreamHandler(KafkaUtils.createStream(ssc, zkQuorum, "myGroup", Map("topic1"->1)).map(_._2)
val topicHandler2 = new OtherStreamHandler(KafkaUtils.createStream(ssc, zkQuorum, "myGroup", Map("topic2"->1)).map(_._2)

topicHandler1.doActions()
topicHandler2 .doActions()

ssc.start()

有更好的方法吗?

StreamHandler
上声明的转换将应用于每一批数据流。目前的代码很不完整,无法给你一个明确的答案。在数据流转换管道中,您将需要一个,否则什么也不会发生

关于该方法,采用数据流并对其应用转换的函数将足够且易于测试:

val pipeline:DStream[Data] => () = dstream => 
    dstream.map(...).filter(...).print()

就目前情况而言,类构造似乎没什么用。

我想你应该说
topicHandler1.doActions()
。是的,我打错了谢谢。我缩短了代码片段以使其更清晰。