【发布时间】: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()方法中,而不是在对象的创建中