gpt4 book ai didi

hadoop - 实现自定义 Apache pig 代数 UDF

转载 作者:可可西里 更新时间:2023-11-01 15:36:26 29 4
gpt4 key购买 nike

大家

我实现了自定义聚合 pig UDF。UDF 实现了 Algebraic 接口(interface),并且有 3 个类 - Initial、Intermed 和 Final 在不同阶段进行工作。它工作正常,但效率有点低。

UDF 使用的算法有点重 - 特别是在单个值上运行时。当在更大的数据组上运行时,它会更有效地工作——比如——一次 100 个。我观察到 Initial 类总是使用单个值调用,然后与 Intermed 和 Final 类组合。

我知道在这种情况下有 Accumulator 接口(interface),但我找不到关于如何将它与代数 UDF 一起使用的文档。

所以我的问题是 - 有没有办法让我“强制”pig 将更多值传递给初始计算 - 使用 Accumulator 接口(interface)或通过其他方式。

非常感谢解释或指向文档或示例的指针。

谢谢阿米尔

最佳答案

Pig 的 Algebraic Initial 函数似乎总是在其元组中接收单个值(至少根据 this blog post )。

为了解决我的问题,我最终做的只是返回 Initial 中的单个值而不进行任何处理。 Intermed 和 Final 函数将执行算法。

由于 Intermed 函数可能从 Initial 函数或另一个 Intermed 函数接收输出(这是根据文档,在实践中没有看到,在我的测试中,Intermed 总是从 Initial 函数接收值),两者我的 Initial 和 Intermed 函数现在返回一个包含两个值的元组。元组中的第一个值是一个字符串,告诉我值的来源——“Initial”或“Intermed”。元组中的第二个值是实际结果。

关于hadoop - 实现自定义 Apache pig 代数 UDF,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24477385/

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