在 Pentaho 中对 200-3 亿条记录进行排序的最佳方法?
Posted
技术标签:
【中文标题】在 Pentaho 中对 200-3 亿条记录进行排序的最佳方法?【英文标题】:Best way to sort 200-300 million records in Pentaho? 【发布时间】:2017-01-25 15:13:24 【问题描述】:我正在处理这个新任务,我的输入 csv 文件有大约 200 到 3 亿条记录,我的要求是对传入的数据进行排序,执行查找,获取键值并插入到目标表中。一个建议是编写一个 java 插件,它将数据排序和存储在多个临时文件中(比如每个文件一百万个)并从那里检索。我正在考虑在 pentaho 中使用排序步骤并设置要开始的副本数。但我不确定最好的方法是什么。任何人都可以建议如何去做。谢谢。
【问题讨论】:
【参考方案1】:我使用 PDI 对这么多行进行了排序。 Sort
步骤工作正常,但它可能很挑剔。我将“可用内存阈值(以 % 为单位)”设置为 ~50。该步骤将在您的“排序目录”中生成大量临时文件;如果作业崩溃(通常是由于内存不足),您将不得不手动删除临时文件。
如果我必须再做一次,我可能会设置“压缩 TMP 文件?”选项,因为多次故障使我的磁盘空间不足。祝你好运!
Java 中的自定义排序可能会给您带来更好的性能,但开发时间会很长。如果您要每天/每周对这么多行进行排序,无论如何,这可能是值得的。如果没有,请坚持使用 PDI 的Sort
。
【讨论】:
我用 pentaho 排序步骤尝试了一些测试,当我使用行生成器步骤时它工作正常,但当我使用 cvs 输入时冻结或崩溃。不知道为什么。 可能是因为您的数据集的大小。确保“延迟转换”已关闭。尝试调整可用内存阈值设置。 谢谢。这有帮助。减小缓冲区大小也有帮助。以上是关于在 Pentaho 中对 200-3 亿条记录进行排序的最佳方法?的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 Scala 将 1 亿条记录加载到 MongoDB 中进行性能测试?