【问题标题】:Is there any problems with saving parquet as a single file and no directory将镶木地板保存为单个文件且没有目录是否有任何问题
【发布时间】:2020-02-18 02:44:15
【问题描述】:

我目前正在开发一个 Pyspark 应用程序,以将每日 delta 提取物输出为镶木地板。这些文件将是一个单独的分区(自然分区将在数据创建/更新的日期,这就是它们的构建方式)。

我打算然后获取输出的 parquet 文件夹和文件,重命名实际 parquet 文件本身,将其移动到另一个位置并丢弃原始的 *.parquet 目录,包括其 _SUCCESS*.crc 文件。

虽然我已经使用 Spark 和 Pandas 测试了使用上述场景生成的读取文件,但我不确定这是否会导致我们将来可能引入的其他应用程序出现问题。

任何人都可以看到上述方法的任何实际问题(除了处理/编码工作)吗?

谢谢

【问题讨论】:

    标签: pandas apache-spark pyspark parquet


    【解决方案1】:

    如果您拥有 one parquet file 并将该文件重命名为 new filename,那么新文件将是 valid parquet file

    如果您是 combining one or more parquet files 并将它们组合成 one,那么组合文件将是 not be a valid parquet file

    • 如果您是 combining more parquet files 合一,那么最好使用 spark(使用重新分区)创建一个文件并写入表。

      (or)

    • 您还可以使用 parquet-tools-**.jarmerge multiple parquet files 到一个拼花文件中。

    【讨论】:

    • 在这种情况下,我每天(每个表)生成一个文件,每个文件都有一个唯一的名称,通过时间戳(即df.coalesce(1).write.format("parquet").mode("overwrite").save(delta_parquet_output))。这些将仍然是原始来源。如果有任何过程需要合并文件,这将需要在下游发生并且独立于该过程。我想确保其他应用程序和进程可以以这种方式处理文件,并且不要期望 parquet 的“目录/文件”类型结构。
    • @Ash,如果您想在任何进程中合并文件,请使用csv/text files,这样我们将它们合并到一个文件中就不会出现问题!
    • 是的,我明白了。我也明白,要将镶木地板合并在一起,它们需要以某种形式进行处理(数据框、雅典娜等),然后才能合并。感谢您的回复。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-01-08
    • 1970-01-01
    • 1970-01-01
    • 2018-05-14
    • 2020-03-11
    • 2015-05-30
    • 2017-08-12
    相关资源
    最近更新 更多