spark任务级重试导致的clickhouse中数据不一致
2021-01-27 本文已影响0人
JX907
问题:
有个hive2clickhouse任务,在foreachPartition中的逻辑出错时会触发stage的容错,最终任务是成功状态,但clickhouse中的数据会存在重复。(失败前已经写过一部分,clickhouse的主键又不能保证数据一致性)
期望在失败时立即停止运行,由人工干预修复整个任务。
代码大致逻辑如下:
sql.toJavaRDD().repartition(10).foreachPartition(records -> {
// 控制批次写clichouse的逻辑,此处经常会遇到clickhouse负载大而失败
});
解决方案:
设置spark task失败后不再重试,对应参数为: spark.task.maxFailures
@Override
protected SparkConf getSparkConf() {
SparkConf conf = super.getSparkConf();
conf.set("spark.task.maxFailures", "1");
return conf;
}
参考: