Внешняя сортировка Hazelcast. Сортировка записей в большом CSV - PullRequest
3 голосов
/ 05 августа 2020

У меня есть вариант использования, когда мне нужно отсортировать огромный CSV-файл, скажем, 10 миллионов записей, и записать результат в другой файл. Предоставляет ли hazelcast-jet / hazelcast какие-либо возможности такой внешней сортировки, если у меня ограниченная оперативная память.

Ответы [ 2 ]

1 голос
/ 09 августа 2020

В настоящее время я работаю над внедрением этой функции в рамках моего проекта GSo C для Hazelcast Jet. Я использовал функцию серверной части состояния RocksDB, которую я разработал ранее, для сортировки, поэтому вы можете сортировать наборы данных, размер которых превышает размер памяти. В настоящее время он предназначен для пакетного использования и для использования в конвейере, который вы вызываете BatchStage.sort(keyFn), где keyFn извлекает ключ для сортировки. вы можете увидеть код на этом PR

0 голосов
/ 10 августа 2020

10 миллионов записей - это ничто. Сомневаюсь, что вам здесь действительно нужен орех. Используйте команду сортировки с unix:

 sort --field-separator=',' --key=2 source.csv > target.csv

Вы можете обернуть эту команду кодом Java следующим образом:

Process sortProcess = Runtime.getRuntime().exec(cmd);

Если вы настаиваете на использовании Hazelcast, вам нужно чтобы уменьшить объем памяти. Сохраните все остальное, кроме сортируемых столбцов, как байтовый массив.

...