【问题标题】:how to understand each part of the name of a parquet file如何理解拼花文件名称的每个部分
【发布时间】:2019-12-14 23:18:05
【问题描述】:

案例: part-00000-deb4a3d4-d8c3-4983-8756-ad7e0b29e780.c000.snappy.parquet

我在代码中找不到 parquet 文件的一些规则。 谁能解释一下?

代码: https://github.com/apache/spark/blob/master/sql/core/src/main/scala/org/apache/spark/sql/execution/datasources/FileFormatWriter.scala

https://github.com/apache/spark/blob/master/core/src/main/scala/org/apache/spark/internal/io/FileCommitProtocol.scala

【问题讨论】:

    标签: apache-spark parquet


    【解决方案1】:

    在这种情况下:

    part-00000 表示拆分(一个)分区号。

    -deb4a3d4-d8c3-4983-8756-ad7e0b29e780 表示随机 UUID 以允许 Spark Actions 中的并发写入进程不发生冲突。

    “c000”表示一个计数器,指示该分区的文件已被写入的次数。这是它是零,它指望。说实话,不知道如果超过 999 会发生什么。

    【讨论】:

    • 是的,我读过一些像你这样的答案。但我想用代码的方式来看看并证明它是对的。
    • 这被普遍接受,你可以在虚拟机或业务集群上尝试,所以不确定你的代码方式是什么意思。如果你知道 999 之后发生了什么,请告诉我。
    • 我的意思是我想看代码中的具体实现,但是没有找到。
    • 你的意思是 Spark 源中的 DataFrameWriter?
    • 我找到了。在 FileCommitProtocol.scala 中的函数 newTaskTempFile 中说
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-02-17
    • 2014-09-27
    • 2017-09-29
    • 1970-01-01
    • 1970-01-01
    • 2015-04-04
    • 2016-02-12
    相关资源
    最近更新 更多