【问题标题】:Most performant file format (Avro/Parquet/ORC) for records with a small number of fields具有少量字段的记录的最高性能文件格式 (Avro/Parquet/ORC)
【发布时间】:2020-04-19 23:49:55
【问题描述】:

我正在向 BigQuery 上传大量数据(大约 160GB 未压缩)。

GZIP 对我来说不是一个选项,这里需要压缩,所以我只能使用 Avro/Parquet/ORC,并在块级别进行压缩。

我尝试在网上查找,但发现这 3 种格式之间的性能比较很少,而且我发现的那些来自看起来很狡猾的网站。

我的记录包含大约 20 个字段,一个字段是包含 2 个字段的记录(可以展平,不一定是记录)。

我对读取速度不太感兴趣,因为 BigQuery 会这样做,写入方面性能最高的文件格式是什么?

【问题讨论】:

    标签: google-bigquery avro parquet orc


    【解决方案1】:

    答案取决于您要在BigQuery 上创建哪种类型的表。

    外部表只是指向文件的指针。每次查询外部表BigQuery 都必须打开该表指向的所有文件。

    原生表是不同的。当您加载原生表时,BigQuery 会导入其中的所有数据并以自己的格式在内部存储。原生表比外部表更优化,但你必须考虑到你也会为此付出更多。重要的是要记住,使用本机表,您可以加载表,而无需在云存储中上传任何文件。除此之外,如果您从云存储中的文件创建表,则在将数据加载到本机表后,您无需将文件保存在那里。

    如果要创建外部表,则应考虑读取性能。在这种情况下,PARQUETORC 等列格式将是一个不错的选择。否则,如果您要创建原生表,则不必担心读取性能。

    关于压缩,证明PARQUETORC 可以比AVRO 压缩更多。鉴于我在GCP 的经验,如果您想要具有良好压缩的优化格式,我建议您使用PARQUET 格式和DEFLATE 压缩。

    希望我的回答对你有所帮助。如果您有任何问题,请告诉我。

    【讨论】:

    • 我认为 parquet 和 snappy 压缩比放气更好。 ORC 声称在某些基准测试中也比镶木地板更好
    • 到目前为止,在我对不同类型数据执行的所有测试中,deflate 在压缩方面比 snappy 更有利可图。关于文件格式,这取决于您使用的平台。 GCP 不久前开始支持 ORC 文件,因此 PARQUET 过去更适合使用。
    【解决方案2】:

    我会选择 Parquet,只是因为它易于使用且可用的工具。如果您阅读了比较 ORC 与 Parquet 的写入速度的帖子,您会发现它们已经过时,并且速度实际上取决于您使用的压缩库。

    我的建议是,在您将用于导出的语言中选择具有最佳工具的格式。并且不用担心边际写入速度差异。

    【讨论】:

      猜你喜欢
      • 2021-07-18
      • 2020-11-28
      • 2016-09-08
      • 1970-01-01
      • 2021-05-02
      • 1970-01-01
      • 2018-04-16
      • 2020-07-05
      • 2014-06-22
      相关资源
      最近更新 更多