我只想停止spark作业,如果在向ES写入数据时发生任何异常。有一个配置es.batch.write.retry.count的默认值是3。我们可以设置es.batch.write.retry.count =0,这样如果按照我的要求发生故障,spark数据帧写入ES就会停止吗?
发布于 2019-12-01 06:09:24
es.batch.write.retry.count的配置只是处理在放弃并移动到下一批之前为每一批尝试写入elastic的时间,它不会影响您的spark作业。你可以做的变通办法是设置spark.task.maxFailures=1,但它会影响你的整个作业,而不仅仅是对elasticsearch的写入。
你应该注意到,因为对elastic的写入不是事务性的,所以如果一个向elastic写入的任务失败了,这并不意味着你的一些数据已经被写入elastic。
我不知道你的用例是什么,但是如果你想确保你所有的数据都被写到了elasticsearch中,你应该做一个_count查询,并在写完之后检查它是否等于df.count() (假设你是在写新的索引)。
https://stackoverflow.com/questions/59099203
复制相似问题