如何优化 tUniqRow 和 tSortRow
howa to optimise tUniqRow and tSortRow
为了获得最佳性能,将 tSortRow 放在 tUniqRow 之前更好还是相反?
以及如何优化 tUniqRow ?
即使我使用 "disk option",作业也会崩溃。
我正在处理一个 300 万行的文件
为了优化您的工作,您可以尝试以下方法:
在 tSortRow
上使用选项 "use disk" 和较小的缓冲区(默认的 100 万行缓冲区太大,因此从少量行开始,50k例如,然后增加它以获得更好的性能)。这将在磁盘上使用更多(更小)的文件,因此您的作业会 运行 变慢,但会消耗更少的内存。
尝试使用 tSortRow
(使用磁盘)和 tAggregateSortedRow
而不是 tUniqRow
(通过在 Group By 部分指定唯一列,它起作用作为 tUniqRow
,不属于唯一键的列必须在操作选项卡中分别使用 'First' 函数指定)。因为它期望行已经排序,所以它不会首先在内存中对它们进行排序。请注意,此组件要求您事先知道流程中的行数,如果您分多个步骤处理数据,您可以从之前的子作业中获取这些行数。
此外,如果您在 tSortRow
中排序的列来自您的数据库 table,您可以在 [=] 中使用 ORDER BY
子句17=]。这样排序将在数据库端完成,您的作业不会消耗内存进行排序。
为了获得最佳性能,将 tSortRow 放在 tUniqRow 之前更好还是相反? 以及如何优化 tUniqRow ? 即使我使用 "disk option",作业也会崩溃。 我正在处理一个 300 万行的文件
为了优化您的工作,您可以尝试以下方法:
在
tSortRow
上使用选项 "use disk" 和较小的缓冲区(默认的 100 万行缓冲区太大,因此从少量行开始,50k例如,然后增加它以获得更好的性能)。这将在磁盘上使用更多(更小)的文件,因此您的作业会 运行 变慢,但会消耗更少的内存。尝试使用
tSortRow
(使用磁盘)和tAggregateSortedRow
而不是tUniqRow
(通过在 Group By 部分指定唯一列,它起作用作为tUniqRow
,不属于唯一键的列必须在操作选项卡中分别使用 'First' 函数指定)。因为它期望行已经排序,所以它不会首先在内存中对它们进行排序。请注意,此组件要求您事先知道流程中的行数,如果您分多个步骤处理数据,您可以从之前的子作业中获取这些行数。此外,如果您在
tSortRow
中排序的列来自您的数据库 table,您可以在 [=] 中使用ORDER BY
子句17=]。这样排序将在数据库端完成,您的作业不会消耗内存进行排序。