Hadoop Parquet Datastorewriter плохая производительность письма

Я пишу файлы Parquet, используя 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, ...

Как вы можете видеть, я пишу 300K объектов на файл Parquet, что приводит к файлам размером около 700K на диске. Ничего особенного... Однако после одной или двух записей я получаю все меньше и меньше сообщений, подобных этим, и процесс останавливается...

Есть идеи о том, что может происходить? В Клодере все зеленое...

Используемые версии:

  • Cloudera 5.11
  • Java 8
  • Spring Integration 4.3.12.RELEASE
  • Spring Data Hadoop 2.2.0.RELEASE

Изменить: На самом деле, я изолировал запись файлов Parquet с помощью инструмента CLI Kite Dataset, и проблема заключается в производительности самого SKD. С использованием csv-import командуя и загружая данные из CSV, я вижу, что мы пишем со скоростью 400 000 записей в минуту, что намного ниже, чем 15,0000 000 записей в минуту, которые мы пишем, отсюда и остановка...

Можете ли вы порекомендовать какой-либо способ улучшить этот уровень записи? Спасибо!

0 ответов

Другие вопросы по тегам