我有一个用例,我需要对一个巨大的csv文件进行排序,比如1000万条记录,然后将结果写到另一个文件中。hazelcast-jet / hazelcast是否在RAM有限的情况下提供了这样的外部排序功能?
发布于 2020-08-09 07:27:27
我目前正在为Hazelcast Jet引入这个功能,作为我的GSoC项目的一部分。我使用了之前开发的RocksDB状态后端功能进行排序,因此您可以对大于内存的数据集进行排序。它目前用于批处理用例,并在称为BatchStage.sort(keyFn)的管道中使用它,在该管道中,keyFn提取要排序的键。您可以在此PR上查看代码
发布于 2020-08-10 05:00:37
一千万条记录算不了什么。我怀疑这是你真正需要的hazelcast。使用unix附带的sort命令:
sort --field-separator=',' --key=2 source.csv > target.csv您可以使用Java代码包装此命令,如下所示:
Process sortProcess = Runtime.getRuntime().exec(cmd);如果您坚持使用Hazelcast,则需要保持较低的内存占用。保留除排序为字节数组的列之外的所有其他内容。
https://stackoverflow.com/questions/63266152
复制相似问题