文档首页/ MapReduce服务 MRS/ 组件操作指南(普通版)/ 使用Spark2x(MRS 3.x及之后版本)/ Spark2x常见问题/ Spark Streaming/ Spark Streaming应用运行过程中重启Kafka,Web UI界面部分batch time对应Input Size为0 records
更新时间:2022-12-09 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”

图1 Web UI界面部分batch time对应Input Size为0 records

回答

Kafka重启成功后应用会按照batch时间把2017/05/11 10:57:00~2017/05/11 10:58:00缺失的RDD补上(如图2所示),尽管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),如图2所示。

图2 重启时间段缺失数据处理机制

相关文档