繁体   English   中英

带有火花流问题的 Kafka:无法使用现有数据从主题中读取数据

[英]Kafka with spark streaming issue: Cannot read data from topic with existing data

我正在尝试从带有火花流的 Kafka 经纪人那里阅读,但我遇到了一些问题。

def spark_streaming_from_STABLE_kafka_topic():
    conf = SparkConf().setMaster("spark://antonis-dell:7077").setAppName("Kafka_Spark")
    sc = SparkContext(conf=conf) 
    sc.setLogLevel("WARN")
    ssc = StreamingContext(sc, 2)

    topic = "stable_topic"
    kvs = KafkaUtils.createDirectStream(ssc,
                                    [topic],
                                    {"metadata.broker.list": "my-broker",
                                    "auto.offset.reset": "smallest"},
                                    keyDecoder=lambda x: x,
                                    valueDecoder=lambda x: x
                                    )

    lines = kvs.window(2, 2).map(lambda x: x[1])
    lines.pprint()
    return ssc


if __name__ == "__main__":
    ssc = StreamingContext.getOrCreate('/home/antonis/Desktop/tmp/checkpoint_v06', lambda: spark_streaming_from_STABLE_kafka_topic())
    ssc.start()
    ssc.awaitTermination()

上面的代码除了空批次外不获取任何东西:

-------------------------------------------
Time: 2020-05-29 09:32:38
-------------------------------------------

-------------------------------------------
Time: 2020-05-29 09:32:40
-------------------------------------------

主题stable_topic包含固定大小的数据。 它不会改变。 我有另一个每秒接收数据的主题。 如果我使用此主题而不是stable_topic并删除"auto.offset.reset": "smallest" ,则代码会获取数据。

我认为{"auto.offset.reset": "smallest"}有问题,但我无法弄清楚。

有谁现在我做错了什么?

在后来的版本中, smallest的被替换为earliest的。 确保检查您正在使用的版本的文档。

此外,如果 Consumer Group 已经在消费主题stable_topic中的一些数据,则auto.offset.reset配置将不会生效。 因此,您可以考虑更改流式传输作业中的group.id

如果您要分配新的group.id ,请确保将auto.offset.reset设置为smalles (或较新版本中的earliest )。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM