我在 Spark Structures Streaming 中使用文件源,并希望在处理完文件后删除它们。
我正在阅读一个充满 JSON 文件( , 等)的目录1.json
,2.json
然后将它们写为 Parquet 文件。我想在成功处理每个文件后删除它。
我在 Spark Structures Streaming 中使用文件源,并希望在处理完文件后删除它们。
我正在阅读一个充满 JSON 文件( , 等)的目录1.json
,2.json
然后将它们写为 Parquet 文件。我想在成功处理每个文件后删除它。
编辑 2:将我的 go 脚本改为读取源代码。新脚本
编辑:目前正在尝试,它可能会在处理文件之前删除文件。目前正在寻找更好的解决方案并研究此方法。
我通过创建一个 Go 脚本暂时解决了这个问题。它将扫描我在 Spark 中设置的检查点文件夹并处理其中的文件,以确定哪些文件已经从 Spark 中写入。如果它们存在,它将删除它们。它每 10 秒执行一次。
但是,它依赖于 Spark 的检查点文件结构和表示 (JSON),它没有记录,并且可能随时更改。我也没有查看 Spark 源代码来查看我正在阅读的文件 ( checkpoint/sources/0/...
) 是否是已处理文件的真实来源。似乎在工作的ATM虽然!此时比手动执行要好。
现在可以在 Spark 3 中使用。您可以对 readStream 使用“cleanSource”选项。
感谢文档https://spark.apache.org/docs/latest/structuread-streaming-programming-guide.html和这个视频https://www.youtube.com/watch?v=EM7T34Uu2Gg。
找了好几个小时终于解决了