流与文件水槽:复苏的问题如果你改变检查点或输出目录

学习如何解决问题,出现复苏如果你改变检查点或输出目录流媒体文件时下沉。

写的亚当Pavlacka

去年发表在:2022年5月17日

当你流数据到一个文件中,你应该总是一起改变检查点和输出目录。否则,你可以得到故障或意外的输出。

Apache火花在输出目录中创建一个文件夹命名_spark_metadata。这个文件夹包含写前每批次运行日志。这就是火花时只有一次保证写入文件系统。这个文件夹包含为每个批量保存文件(命名为0,1,2,3等+ 19.紧凑,n.compact等)。这些文件包含JSON,让细节的输出特定的批处理。的帮助下这些数据,一旦一批成功,任何重复的批产量就会被丢弃。

如果你改变检查点目录而不是输出目录:

当你改变检查点目录,流作业将批次从0开始。从0已经出现在了_spark_metadata文件夹,输出文件将被丢弃,即使它有新的数据。如果你停止之前的运行在500批,下一次运行相同的输出目录和不同的检查点目录将只在第501批输出。所有之前的批次将默默地丢弃。

如果你改变输出目录而不是检查点目录:

当你改变输出目录,它就失去了所有的批处理的数据_spark_metadata文件夹中。但火花从下一批开始写根据检查点目录。例如,如果前面的运行是在500年,第一个写的新工作将在501年文件_spark_metadata和你失去了所有的旧批次。当你阅读这些文件,你会错误元数据批处理0(或第一个紧凑的文件(19.)紧凑)没有找到

文件流。

这篇文章有用吗?