如果实时计算作业遇到了某个错误挂掉了,那么我们可以配置容错机制让它自动重启,同时继续之前的进度运行下去。这是通过checkpoint和wal机制完成的。可以给query配置一个checkpoint location,接着query会将所有的元信息(比如每个trigger消费的offset范围、至今为止的聚合结果数据),写入checkpoint目录。
aggDF
.writeStream()
.outputMode("complete")
.option("checkpointLocation", "path/to/HDFS/dir")
.format("memory")
.start();