Google bigquery 对于具有少量字段的记录,采用最高效的文件格式(Avro/Parquet/ORC)

Google bigquery 对于具有少量字段的记录,采用最高效的文件格式(Avro/Parquet/ORC),google-bigquery,avro,parquet,orc,Google Bigquery,Avro,Parquet,Orc,我上传了很多数据(约160GB未压缩)到BigQuery GZIP对我来说不是一个选项,这里需要压缩,这样我就可以使用Avro/Parquet/ORC在区块级别上进行压缩 我试着在网上查找,但发现这3种格式之间的性能比较非常少,而且我确实找到了那些看起来不可靠的网站 我的记录包含大约20个字段,其中一个字段是一个记录,其中有两个字段(可以展平,不必是记录) 我对读取速度不太感兴趣,因为BigQuery会这样做,从写入角度看,最有效的文件格式是什么?我会选择Parquet,这仅仅是因为它的易用性和

我上传了很多数据(约160GB未压缩)到BigQuery

GZIP对我来说不是一个选项,这里需要压缩,这样我就可以使用Avro/Parquet/ORC在区块级别上进行压缩

我试着在网上查找,但发现这3种格式之间的性能比较非常少,而且我确实找到了那些看起来不可靠的网站

我的记录包含大约20个字段,其中一个字段是一个记录,其中有两个字段(可以展平,不必是记录)


我对读取速度不太感兴趣,因为BigQuery会这样做,从写入角度看,最有效的文件格式是什么?

我会选择Parquet,这仅仅是因为它的易用性和可用的工具。如果你读了一篇文章,比较了ORC和拼花地板的写入速度,你会发现它们已经过时了,速度实际上取决于你使用的压缩库


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

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

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

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

如果要创建外部表,则应考虑读取性能。在这种情况下,柱状格式(如

PARQUET
ORC
)将是一个不错的选择。否则,如果要创建本机表,就不必担心读取性能

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


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

我认为拼花地板和snappy压缩比放气好。ORC声称在一些基准测试中优于拼花地板,在我迄今为止在不同类型的数据中进行的所有测试中,deflate在压缩方面比snappy更有利可图。关于文件格式,这取决于您使用的平台。GCP不久前就开始支持ORC文件,所以拼花地板过去更适合使用。