我想对每个主题进行分组,或者知道应用时来自哪个主题的消息:
val stream = KafkaUtils.createDirectStream[String, String](
ssc,
PreferConsistent,
Subscribe[String, String](
Array(topicConfig.srcTopic),
kafkaParameters(BOOTSTRAP_SERVERS,"kafka_test_group_id))
)
)
然而,在最新的API中,kafka010似乎不像以前的版本那样支持消息处理程序。关于如何获得主题的任何想法?
我的目标是使用N个主题来处理它们(以不同的方式取决于主题),然后将其推回到主题的1:1映射中的另外N个主题:
SrcTopicA--> Process --> DstTopicA
SrcTopicB--> Process --> DstTopicB
SrcTopicC--> Process --> DstTopicC
但是有些属性需要共享(这些属性会发生很大变化,因此无法使用广播变量)。因此,所有主题都需要在同一个火花作业中使用。
答案 0 :(得分:0)
您可以使用ACTION_VIEW
像这样过滤流:
topic
答案 1 :(得分:0)
在0.10中使用createDirectStream
后,您将获得ConsumerRecord
。此记录的值为topic
。您可以创建主题和值的元组:
val stream: InputDStream[ConsumerRecord[String, String]] =
KafkaUtils.createDirectStream[String, String](
streamingContext,
PreferConsistent,
Subscribe[String, String](topics, kafkaParams)
)
val res: DStream[(String, String)] = stream.map(record => (record.topic(), record.value()))