簡體   English   中英

每個 kafka 主題的火花流不同值解碼器

[英]spark streaming different value decoder per kafka topic

我需要創建一個從多個主題讀取的 Spark 流,並為每個主題使用不同的解碼器(每個主題包含不同的 avro 編碼對象):

def decode_avro(message):
    schem = avro.schema.parse(open("error_list.avsc").read())
    bytes_reader = io.BytesIO(message)
    decoder = avro.io.BinaryDecoder(bytes_reader)
    reader = avro.io.DatumReader(schem)
    return reader.read(decoder)

ssc = StreamingContext(sc, 2)
kvs = KafkaUtils.createDirectStream(ssc, [topic, topic2], {
    "metadata.broker.list": brokers}, valueDecoder = decode_avro)

我不知道是否可以為每個主題指定不同的解碼器回調,或者是否可以知道解碼器函數上的主題名稱(這樣我可以使用 avro 模式文件的主題名稱並解碼所有同一函數中的消息)

謝謝

我們也有這種情況,我們從不同的主題中讀取不同的消息格式,然后處理每個主題並將輸出存儲到每個源主題的專用存儲中。 正確的方法是創建多個流。 在同一個應用程序中使用相同的 Spark 上下文按主題流式傳輸。 每個流都會獲得相關的 ValueDecoder,如果它們共享相同的格式,您仍然可以從多個主題中讀取。

暫無
暫無

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

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