gpt4 book ai didi

hadoop - 如何将常量值附加到 pig 的关系

转载 作者:可可西里 更新时间:2023-11-01 15:06:42 24 4
gpt4 key购买 nike

我想保留关系的元组计数来做一些计算,什么是最有效的解决方案。目前我是这样处理的:

G4 = GROUP D ALL;
E = FOREACH G4{
total = COUNT(D);
GENERATE FLATTEN(D),total as total;
};

上面的 pig 代码片段转换为只有一个 reduce 的 MapReduce 作业,速度非常慢。

最佳答案

这需要很长时间,因为您必须将所有数据发送到 reducer ,然后再将其全部写回磁盘。这是由于 FLATTEN . COUNT实际上会非常有效,因为 Pig 使用组合器来处理中间结果。所以你可以只计算计数,然后高效地计算 JOIN它重新使用虚拟值:

G4 = GROUP D ALL;
E = FOREACH G4 GENERATE COUNT(D) AS ct;
F = JOIN D BY 1, E BY 1 USING 'replicated';

现在你的关系F具有 D 中的所有元组,加上一个名为 ct 的字段那是 D 中的元组总数.通过 USING 'replicated' , 你把 E存入内存,因此您不必将数据放入缩减阶段。

计算 E仍然需要 1 个 reducer ,但它会很快。

关于hadoop - 如何将常量值附加到 pig 的关系,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20046193/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com