我上传了大量数据(大约160GB未压缩(到BigQuery。
GZIP对我来说不是一个选项,这里需要压缩,所以这让我在块级别上压缩了Avro/Parquet/ORC。
我尝试在线查找,但发现这 3 种格式之间的性能比较很少,我发现的格式来自看起来很狡猾的网站。
我的记录包含大约 20 个字段,一个字段是包含 2 个字段的记录(可以平展,不必是记录(。
我对读取速度不太感兴趣,因为 BigQuery 会这样做,什么是最高性能的文件格式写入?
答案取决于您要在BigQuery
上创建的表类型。
外部表只是指向文件的指针。每次查询外部表时,BigQuery
都必须打开该表指向的所有文件。
本机表是不同的。加载本机表时,BigQuery 会导入其中的所有数据,并以自己的格式在内部存储。本机表比外部表更优化,但您必须考虑到您也将为此支付更多费用。重要的是要记住,使用本机表,您可以加载表,而无需在云存储中上传任何文件。除此之外,如果您从云存储中的文件创建表,则在将数据加载到本机表中后,您无需将文件保留在那里。
如果要创建外部表,则应考虑读取性能。在这种情况下,PARQUET
和ORC
等列式格式将是一个不错的选择。否则,如果您要创建本机表,则不必担心读取性能。
关于压缩,事实证明PARQUET
和ORC
可以比AVRO
压缩得更多。鉴于我在GCP
方面的经验,如果您想要具有良好压缩的优化格式,我建议您使用PARQUET
DEFLATE
压缩。我希望我的回答对您有所帮助。如果您有任何问题,请告诉我。
我会选择Parquet,仅仅是因为它易于使用和可用的工具。如果您阅读比较ORC与Parquet的写入速度的文章,您会发现它们已经过时,并且速度实际上取决于您正在使用的压缩库。
我的建议是,选择您将用于导出的语言中具有最佳工具的格式。并且不必担心边际写入速度差异。