【问题标题】:Delete files after processing with Spark Structured Streaming使用 Spark 结构化流处理后删除文件
【发布时间】:2021-09-21 01:07:31
【问题描述】:

我正在使用file source in Spark Structures Streaming 并希望在处理完文件后将其删除。

我正在阅读一个充满 JSON 文件(1.json2.json 等)的目录,然后将它们写为 Parquet 文件。我想在成功处理后删除每个文件。

【问题讨论】:

    标签: apache-spark spark-structured-streaming


    【解决方案1】:

    编辑 2:将我的 go 脚本改为读取源代码。 new script

    编辑:目前正在尝试,它可能会在处理文件之前删除文件。目前正在寻找更好的解决方案并研究此方法。

    我通过创建a Go script 暂时解决了这个问题。它将扫描我在 Spark 中设置的检查点文件夹并处理其中的文件,以确定哪些文件已经从 Spark 中写入。如果它们存在,它将删除它们。它每 10 秒执行一次。

    但是,它依赖于 Spark 的检查点文件结构和表示 (JSON),它没有记录在案,并且可能随时更改。我也没有通过 Spark 源代码查看我正在阅读的文件 (checkpoint/sources/0/...) 是否是已处理文件的真实来源。似乎在工作的ATM虽然!此时比手动执行要好。

    【讨论】:

    • 检查点文件存储了 Spark 看到的文件,但 Spark 可能仍在使用它。
    • 这是一个很好的功能请求。你能在issues.apache.org/jira/browse/SPARK 上开票吗?
    【解决方案2】:

    现在可以在 Spark 3 中使用。您可以对 readStream 使用“cleanSource”选项。

    感谢文档https://spark.apache.org/docs/latest/structuread-streaming-programming-guide.html 和此视频https://www.youtube.com/watch?v=EM7T34Uu2Gg

    找了好几个小时,终于解决了

    【讨论】:

    • 您的答案可以通过额外的支持信息得到改进。请edit 添加更多详细信息,例如引用或文档,以便其他人可以确认您的答案是正确的。你可以找到更多关于如何写好答案的信息in the help center
    猜你喜欢
    • 1970-01-01
    • 2019-08-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-12-10
    • 2019-10-24
    • 1970-01-01
    • 2019-01-10
    相关资源
    最近更新 更多