我´我正在用 ParquetDatasetStoreWriter
我的表现真的很差。通常遵循的流程如下:
// First write
dataStoreWriter.write(entity #1);
dataStoreWriter.write(entity #2);
...
dataStoreWriter.write(entity #N);
// Then close
dataStoreWriter.close()
问题是,你可能知道,我的 dataStoreWriter
一个是门面,真正的写作工作是由一个 taskExecutor
和一个 taskScheduler
. 这项工作可以通过以下提示标准输出的消息来查看:
INFO: parquet.hadoop.ColumnChunkPageWriteStore: written 685B for [localId] BINARY: 300,000 values, ...
INFO: parquet.hadoop.ColumnChunkPageWriteStore: written 75B for [factTime] INT64: 300,000 values, ...
INFO: parquet.hadoop.ColumnChunkPageWriteStore: written 50B for [period] INT32: 300,000 values, ...
INFO: parquet.hadoop.ColumnChunkPageWriteStore: written 6,304B for [objectType] BINARY: 300,000 values, ...
如您所见,我正在为每个Parquet文件写入300k对象,这导致磁盘中的文件约为700k。没什么大不了的。。。然而,在一两次写入之后,我收到的像这样的消息越来越少,进程停止了。。。
你知道会发生什么吗?云时代一切都是绿色的。。。
使用的版本:
cloudera 5.11版
java 8
spring集成4.3.12.发布
spring数据hadoop 2.2.0.release
编辑:实际上,我使用kite dataset cli工具隔离了parquet文件的编写,问题是skd本身的性能。使用 csv-import
命令并从csv加载数据,我看到我们正在以每分钟400.000条记录的速度写入,这远远低于我们正在写入的每分钟15.0000.000条记录,因此暂停。。。
你能推荐一些提高写作速度的方法吗?谢谢!
暂无答案!
目前还没有任何答案,快来回答吧!