我有一个SPARK流应用程序,它从kafka直接流中读取连续的传入数据。
这是我的设置
spark-core_2.10 - 2.1.1
spark-streaming_2.10 - 2.1.1
spark-streaming-kafka-0-10_2.10 - 2.0.0
kafka_2.10 - 0.10.1.1
它在大多数时候运行得很好,但有时当我写给kafka的其他应用程序重新启动时,我得到以下错误。
WARN NetworkClient: Error while fetching metadata with correlation id 139022 : {topic4908100105=LEADER_NOT_AVAILABLE}
18/05/24 11:59:33 WARN NetworkClient: Error while fetching metadata with correlation id 139022 : {topic000001=LEADER_NOT_AVAILABLE}
.
.
.
ERROR JobScheduler: Error generating jobs for time 1527163130000 ms
java.lang.IllegalArgumentException: requirement failed: numRecords must not be negative
我在SO中看到其他帖子,人们建议重新启动kafka或spark应用程序以从此错误中恢复。但我的应用程序必须在没有任何人工干预的情况下持续运行!
有没有办法在Spark使用者类(java)中处理此异常并重新启动流式传输或应用程序?
答案 0 :(得分:0)
WARN NetworkClient:获取具有相关ID 139022的元数据时出错:{topic4908100105 = LEADER_NOT_AVAILABLE} 18/05/24 11:59:33 WARN NetworkClient:获取具有相关ID 139022的元数据时出错:{topic000001 = LEADER_NOT_AVAILABLE}
这是Kafka问题,对于每个分区领导者和粉丝都在那里。领导提出的要求。如果由于zookeeper问题导致领导者不可用,Kafka将抛出此错误。
您需要修复Kafka问题才能接收数据。但是,您可以使用以下配置属性来处理异常情况。