在使用谷歌数据流转换时,谷歌云存储中的Avro与Parquet比较。

3
使用Google Dataflow服务将来自Kafka的相同10k个JSON记录批量加载到Google云存储中。以下是使用Apache Beam的AvroIO、ParquetIO和TextIO库生成的文件拆分情况。
我们认为,与HDP(Hortonworks)和CDH(Cloudera)显示的类似研究相比,Parquet文件在数据占用空间方面在GCP上应该更小。https://dev59.com/ul4b5IYBdhLWcg3wlSZq#31093105 然而,这10k条记录的结果显示,GCS上的Avro大小更小。可以假设选择数据格式吗?除了此处提到的优点之外,还要考虑哪些因素?https://cloud.google.com/blog/products/gcp/improve-bigquery-ingestion-times-10x-by-using-avro-source-format 我们希望选择最佳格式并使整体成本最小化,从而将GCS成本保持最低。

// using ParquetIO write as parquet output file
pCollectionGenericRecords.apply ("ParquetToGCS",FileIO.<GenericRecord>write().via(ParquetIO.sink(AVRO_SCHEMA))

// Using TextIO write as text output file
collection.apply(TextIO.write().to(stagingLocation));

// Using AvroIO write as avro output file
pCollectionGenericRecords.apply("AvroToGCS", AvroIO.writeGenericRecords(AVRO_SCHEMA)

根据建议更新。

使用Dataflow服务将0.6万个json记录(259.48 MB)转换为avro格式和parquet格式,生成如下结果:

Avro输出大小= 52.8 MB

Parquet输出大小= 199.2 MB

为了进行更大规模的测试,需要使用具有成本的Dataflow服务,是否已经有可用的研究可以利用。

1个回答

2

如果要看到Parquet的好处,您需要更大的文件(您可以期望所有这些研究都是针对大约256Mb的文件)。对于流媒体用例,最好坚持使用Avro。

原始答案:最初的回答


更新的问题。尝试使用更大的样本文件,但结果并没有太大的差异。您在Google Cloud Platform上体验过Parquet较小的文件大小吗? - Amogh Antarkar

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接