在 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 中进行性能测试?

MySQL INSERT... 选择包含 4.2 亿条记录的大型数据集

必备工具:使用Pentaho进行数据迁移

处理数十亿条记录的推荐数据库类型

从包含数万亿条记录的 Oracle 表中删除数十亿条记录

Pentaho OLAP 限制