Flink中的StreamingFileSink和突然的作业失败

时间:2020-01-23 20:50:55

标签: hadoop hdfs apache-flink

基本上,我今天的工作失败了,那就是使用StreamingFileSink写入HDFS。不幸的是,我无法使用state重新启动作业,因此我以clear state启动它。我使用的默认分区方案是

/user/samsara/enriched/2020-01-23--11/part-0-0

问题发生时,作业已经创建了多达part-0-10个文件。重新启动后,它开始为HDFS中已经存在的部件创建临时文件。我的意思是第一条记录被追加到文件中

/user/samsara/enriched/2020-01-23--11/.part-0-0.inprogress.17218a4a-ddc2-48a4-9eee-71a9e13ffa7e

启动滚动策略后,我想Flink无法将此文件重命名为part-0-0,因为HDFS上已经存在此类文件。因此,该文件名保持不变。这是预期的行为,我对此无能为力吗?过去,我曾使用Kafka Connect来处理此类情况,并且连接器能够在发生故障时成功重启。这些文件后来被我们的批处理消费者使用,我真的不想通过目录中的命名不一致而使他们的生活变得更艰难。同样,现在确定哪些文件尚未准备好使用还很重要。有什么想法如何解决这个问题?我希望Flink以某种方式重命名这些文件,至少要删除文件前面的点:)

0 个答案:

没有答案