2

我正在使用该类编写 Parquet 文件ParquetDatasetStoreWriter,但我得到的性能非常糟糕。通常遵循的流程是这样的:

// First write
dataStoreWriter.write(entity #1);
dataStoreWriter.write(entity #2);
...
dataStoreWriter.write(entity #N);

// Then close
dataStoreWriter.close()

如您所知,问题在于 mydataStoreWriter是一个门面,而真正的写作工作是由 ataskExecutor和 a完成的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 中的一切都是绿色的……

使用的版本:

  • Cloudera 5.11
  • 爪哇 8
  • Spring 集成 4.3.12.RELEASE
  • Spring Data Hadoop 2.2.0.RELEASE

编辑:实际上,我使用 Kite Dataset CLI 工具隔离了 Parquet 文件的编写,问题在于 SKD 本身的性能。使用该csv-import命令并从 CSV 加载数据,我看到我们正在以每分钟 400.000 条记录的速度写入,这远低于我们正在写入的每分钟 15.0000.000 条记录,因此停滞不前......

你能推荐任何提高写作速度的方法吗?谢谢!

4

0 回答 0