文档首页/
MapReduce服务 MRS/
组件操作指南(安卡拉区域)/
使用Spark/
Spark常见问题/
Spark Streaming/
Spark Streaming应用运行过程中重启Kafka,Web UI界面部分batch time对应Input Size为0 records
更新时间:2024-11-29 GMT+08:00
Spark Streaming应用运行过程中重启Kafka,Web UI界面部分batch time对应Input Size为0 records
问题
在Spark Streaming应用执行过程中重启Kafka时,应用无法从Kafka获取topic offset,从而导致生成Job失败。如图1所示,其中2017/05/11 10:57:00~2017/05/11 10:58:00为Kafka重启时间段。2017/05/11 10:58:00重启成功后对应的“Input Size”的值显示为“0 records”。
回答
Kafka重启成功后应用会按照batch时间把2017/05/11 10:57:00~2017/05/11 10:58:00缺失的RDD补上,尽管UI界面上显示读取的数据个数为“0”,但实际上这部分数据在补的RDD中进行了处理,因此,不存在数据丢失。
Kafka重启时间段的数据处理机制如下。
Spark Streaming应用使用了state函数(例如:updateStateByKey),在Kafka重启成功后,Spark Streaming应用生成2017/05/11 10:58:00 batch任务时,会按照batch时间把2017/05/11 10:57:00~2017/05/11 10:58:00缺失的RDD补上(Kafka重启前Kafka上未读取完的数据,属于2017/05/11 10:57:00之前的batch)。
父主题: Spark Streaming