【发布时间】:2021-09-21 01:07:31
【问题描述】:
我正在使用file source in Spark Structures Streaming 并希望在处理完文件后将其删除。
我正在阅读一个充满 JSON 文件(1.json、2.json 等)的目录,然后将它们写为 Parquet 文件。我想在成功处理后删除每个文件。
【问题讨论】:
标签: apache-spark spark-structured-streaming
我正在使用file source in Spark Structures Streaming 并希望在处理完文件后将其删除。
我正在阅读一个充满 JSON 文件(1.json、2.json 等)的目录,然后将它们写为 Parquet 文件。我想在成功处理后删除每个文件。
【问题讨论】:
标签: apache-spark spark-structured-streaming
编辑 2:将我的 go 脚本改为读取源代码。 new script
编辑:目前正在尝试,它可能会在处理文件之前删除文件。目前正在寻找更好的解决方案并研究此方法。
我通过创建a Go script 暂时解决了这个问题。它将扫描我在 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。
找了好几个小时,终于解决了
【讨论】: