gpt4 book ai didi

apache-spark - Spark 标记文件名以便以后可能删除/回滚?

转载 作者:行者123 更新时间:2023-12-04 17:41:07 24 4
gpt4 key购买 nike

我在 AWS EMR 中使用 Spark 2.4。我正在为我的 ELT/ETL 使用 Pyspark 和 SparkSQL,并在 AWS S3 上使用带有 Parquet 输入和输出的 DataFrames。

据我所知,从 Spark 2.4 开始,无法标记或自定义输出文件 (parquet) 的文件名。请纠正我?

当我在 S3 上存储 parquet 输出文件时,我最终得到的文件名如下所示:

part-43130-4fb6c57e-d43b-42bd-afe5-3970b3ae941c.c000.snappy.parquet

文件名的中间部分 看起来像是嵌入了 GUID/UUID:

part-43130-4fb6c57e-d43b-42bd-afe5-3970b3ae941c.c000.snappy.parquet

我想知道我是否可以在运行时从 PySpark 或 SparkSQL 函数获取此 GUID/UUID 值,以在文本文件中记录/保存/显示此值?

我需要记录此 GUID/UUID 值,因为稍后我可能需要删除名称中包含此值的文件,以进行手动回滚(例如,我可能会在一天或一周后发现这数据不知何故损坏,需要删除,因此可以识别和删除所有标记有 GUID/UUID 的文件)。

我知道我可以在 GUID 列上手动对表进行分区,但最终分区过多,因此会影响性能。我需要的是以某种方式为每个数据加载作业标记文件,以便我可以轻松地从 S3 中识别和删除它们,因此 GUID/UUID 值似乎是一种可能的解决方案。

欢迎任何其他建议。

谢谢

最佳答案

这是新的“s3a 特定提交者”吗?如果是这样,则意味着他们正在使用 netflix 的代码/技巧,即在每个写入的文件上使用 GUID,以避免最终的一致性问题。但这并没有多大帮助。

  1. 考虑为 Spark 提供补丁,让您可以为文件名添加特定前缀。
  2. 或者对于 Apache Hadoop 和 Spark(即不是 EMR),S3A 提交者可以选择在他们生成临时文件名时放置该前缀。

短期:好吧,您始终可以列出目录树的前后状态(提示:使用 FileSystem.listFiles(path, recursive) 提高速度),然后记住新文件,或重命名它们(这会很慢:记住新文件名会更好)

关于apache-spark - Spark 标记文件名以便以后可能删除/回滚?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54452604/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com