我们正在运行一个 Spark 流作业,从目录中检索文件(使用 textFileStream)。
我们担心的一个问题是作业已停止但文件仍在添加到目录中的情况。
一旦作业再次启动,这些文件就不会被拾取(因为它们在作业运行时不是新的或已更改),但我们希望处理它们。
1)有解决办法吗?有没有办法跟踪已处理的文件以及我们可以“强制”拾取旧文件吗?
2)有没有办法删除处理过的文件?
下面的文章几乎涵盖了您的所有问题。
https://blog.yanchen.ca/2016/06/28/fileinputdstream-in-spark-streaming/ https://blog.yanchen.ca/2016/06/28/fileinputdstream-in-spark-streaming/
1)有解决办法吗?有没有办法跟踪已处理的文件以及我们可以“强制”拾取旧文件吗?
启动作业/应用程序时,流读取器使用系统时钟启动批处理窗口。显然之前创建的所有文件都会被忽略。尝试启用检查点.
2)有没有办法删除处理过的文件?
删除文件可能是不必要的。如果检查点起作用,Spark 会识别未处理的文件。如果由于某种原因要删除文件,请实现自定义输入格式和阅读器(请参阅文章)来捕获文件名并酌情使用此信息。但我不推荐这种方法。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)