问题描述:线上环节同步kafka数据作业莫名停止,导致kafka消息堆积。
1. 查看作业状态
SHOW ALL ROUTINE LOAD;
//字段说明
Id: 作业ID
Name: 作业名称
CreateTime: 作业创建时间
PauseTime: 最近一次作业暂停时间
EndTime: 作业结束时间
DbName: 对应数据库名称
TableName: 对应表名称 (多表的情况下由于是动态表,因此不显示具体表名,我们统一显示 multi-table )
IsMultiTbl: 是否为多表
State: 作业运行状态
DataSourceType: 数据源类型:KAFKA
CurrentTaskNum: 当前子任务数量
JobProperties: 作业配置详情
DataSourceProperties: 数据源配置详情
CustomProperties: 自定义配置
Statistic: 作业运行状态统计信息
Progress: 作业运行进度
Lag: 作业延迟状态
ReasonOfStateChanged: 作业状态变更的原因
ErrorLogUrls: 被过滤的质量不合格的数据的查看地址
OtherMsg: 其他错误信息
作业状态 State 为 PAUSED 停止;
关注下面两个字段:
ReasonOfStateChanged: 作业状态变更的原因
ErrorLogUrls: 被过滤的质量不合格的数据的查看地址
2. 查看ReasonOfStateChanged 状态改变原因如下:
ErrorReason{code=errCode = 102, msg='current error rows is more than max error.........
当前错误数大于最大错误数,这里我们查看doris文档,在创建作业时会有 max_error_number 属性,默认为0。官网解释:如果在采样窗口内,错误行数大于 max_error_number
,则会导致例行作业被暂停。
3. 解决
1) 这里更具业务情况,由于我们业务同步的是历史轨迹数据,可以有容错,所以可以将max_error_number 数据调大,然后重启作业。
注:只能修改处于 PAUSED 状态的作业。
//db1 你的库名 label1 作业名
ALTER ROUTINE LOAD FOR db1.label1
PROPERTIES
(
"max_error_number" = "10"
);
//重启作业
RESUME ROUTINE LOAD FOR label1;
再次查看作业状态为 RUNNING 表示正常。
2)业务要求没容错的话,具体查看 ErrorLogUrls 字段中可查看被过滤的质量不合格的数据的查看地址。