簡體   English   中英

有沒有辦法在Kafka使用者中指定多個解碼器(或每個主題一個)? 其他人覺得需要嗎?

[英]Is there a way to specify multiple Decoders (or one per Topic) in a Kafka Consumer? Anyone else felt need for this?

我正在使用以下方法在Scala( ref )中的Kafka工作上進行Spark Streaming

public static <K,V,U extends kafka.serializer.Decoder<?>,T extends kafka.serializer.Decoder<?>> ReceiverInputDStream<scala.Tuple2<K,V>> createStream(StreamingContext ssc, scala.collection.immutable.Map<String,String> kafkaParams, scala.collection.immutable.Map<String,Object> topics, StorageLevel storageLevel, scala.reflect.ClassTag<K> evidence$1, scala.reflect.ClassTag<V> evidence$2, scala.reflect.ClassTag<U> evidence$3, scala.reflect.ClassTag<T> evidence$4)

我想在每個批處理間隔的同一DStream和基礎RDD接收不同類型的消息(需要不同的解碼器)。 我將收聽多個主題,每個主題將對應一種消息類型,因此需要其自己的Decoder 目前看來,似乎沒有為每個主題提供kafka.serializer.Decoder<?> (有嗎?)。 人們似乎很可能會針對每個主題發送不同類型的消息( protobuf序列化字節?)。 還有其他人遇到這個問題嗎?

謝謝。

C。

看來的映射topicvalueDecoder地方在這里可以幫助。

我認為,您需要兩個DStream,每個主題一個。 然后,您將能夠執行join或union以獲得具有所有元素的單個dstream。

使用createDirectStream api,該API使您可以通過HasOffsetRanges按分區對主題進行訪問。 對於kafka解碼器,請使用DefaultDecoder獲取每個消息的字節數組。

然后在mapPartitions中進行實際的解碼,在其中與主題名稱進行匹配,以弄清楚如何解釋字節數組。

http://spark.apache.org/docs/latest/streaming-kafka-integration.html

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM