【问题标题】:Avro vs Parquet in Google Cloud storage using Google Dataflow transformation谷歌云存储中的 Avro 与 Parquet 使用谷歌数据流转换
【发布时间】:2019-08-10 10:33:21
【问题描述】:

使用 Google Dataflow 服务将来自 Kafka 的相同 10k json 记录批量加载到 Google 云存储中。 以下是分别使用 Apache Beam 的 AvroIO、ParquetIO、TextIO 库生成的文件的分解。

我们假设 parquet 文件大小在数据占用量方面会比 GCP 的 avro 更小,因为 HDP (Hortonworks) 和 CDH (Cloudera) 显示了上述类似的研究。 https://stackoverflow.com/a/31093105/4250322

但是,这 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 服务处理 60 万条 259.48 MB 的 json 记录以生成以下 avro vs parquet 格式:

Avro 输出大小 = 52.8 MB

Parquet 输出大小 = 199.2 MB

为了使用 Dataflow 服务进行更大规模的测试,是否有可用的研究可供利用。

【问题讨论】:

    标签: google-cloud-storage google-cloud-dataflow avro apache-beam parquet


    【解决方案1】:

    您需要更大的文件才能看到镶木地板的好处(您可以预期所有这些研究都是针对 256Mb 左右的文件)。对于流式用例,最好坚持使用 Avro。

    【讨论】:

    • 更新问题。尝试使用更大的示例文件,结果没有太大差异。您是否体验过 Google Cloud Platform 的 parquet 文件更小。
    猜你喜欢
    • 2015-07-17
    • 2020-09-10
    • 1970-01-01
    • 1970-01-01
    • 2013-05-17
    • 2020-09-29
    • 2022-12-03
    • 2017-05-11
    • 1970-01-01
    相关资源
    最近更新 更多