【问题标题】:How can I write to Parquet faster using java?如何使用 java 更快地写入 Parquet?
【发布时间】:2020-08-19 16:52:54
【问题描述】:

我正在尝试使用 java 将 Dataset 对象编写为 Parquet 文件。

我按照this 的例子这样做,但速度慢得离谱。

写入约 10mb 的数据需要约 1.5 分钟,因此当我要写入数百 mb 的数据时,它的扩展性不会很好。 我做了一些 cpu 分析,发现 99% 的时间来自 ParquetWriter.write() 方法。

我尝试增加ParquetWriter 的页面大小和块大小,但它似乎对性能没有任何影响。有什么方法可以让这个过程更快,还是只是 Parquet 库的限制?

【问题讨论】:

  • 10MB 是生成的 parquet 文件还是输入数据的大小?另外,那个例子好像是先把所有数据准备成List<GenericData.Record>,你确定是实际写入速度慢还是创建那些对象?
  • @JörnHorstmann ~10MB 是生成的镶木地板文件。将Dataset 对象序列化为 CSV 会产生一个 ~1MB 的文件。我用 Intellij 做了一些分析,问题肯定在 .write() 方法中,而不是在对象的创建中

标签: java database parquet


【解决方案1】:

我有相当的运气使用org.apache.parquet.hadoop.ParquetWriter 编写由org.apache.parquet.example.data.simple.SimpleGroupFactory 制作的org.apache.parquet.example.data.Group

https://github.com/apache/parquet-mr/blob/master/parquet-benchmarks/src/main/java/org/apache/parquet/benchmarks/DataGenerator.java

我很想知道一种更快的方法(每个线程每秒多列 x 行)。

【讨论】:

    猜你喜欢
    • 2022-08-06
    • 1970-01-01
    • 1970-01-01
    • 2019-07-06
    • 2013-10-08
    • 1970-01-01
    • 2019-10-21
    • 2011-10-30
    • 2017-11-17
    相关资源
    最近更新 更多