Hadoop 实现定制的Apache-UDF

Hadoop 实现定制的Apache-UDF,hadoop,apache-pig,Hadoop,Apache Pig,每个人 我实现了一个自定义聚合pig UDF。 UDF实现了代数接口,有3个类——Initial、Intermed和Final在不同的阶段进行工作。 它工作正常,但效率有点低 UDF使用的算法有点重,尤其是在单个值上运行时。当在更大的数据组上运行时(比如一次运行100个数据组),它的工作效率会更高。 我所观察到的是,初始类总是用一个值调用,然后再与中间类和最终类结合使用 我知道在这种情况下有累加器接口,但是我找不到关于如何将它与代数UDF一起使用的文档 所以我的问题是——我有没有办法“强迫”清管

每个人

我实现了一个自定义聚合pig UDF。 UDF实现了代数接口,有3个类——Initial、Intermed和Final在不同的阶段进行工作。 它工作正常,但效率有点低

UDF使用的算法有点重,尤其是在单个值上运行时。当在更大的数据组上运行时(比如一次运行100个数据组),它的工作效率会更高。 我所观察到的是,初始类总是用一个值调用,然后再与中间类和最终类结合使用

我知道在这种情况下有累加器接口,但是我找不到关于如何将它与代数UDF一起使用的文档

所以我的问题是——我有没有办法“强迫”清管器将更多的值传递给初始计算——或者使用累加器接口,或者通过其他方式

如能提供解释或文档或样本的指针,将不胜感激

谢谢
Amir

似乎猪的代数初始函数总是在元组中接收一个值(至少根据)

为了解决我的问题,我最终只返回了初始值中的单个值,而没有进行任何处理。中间函数和最终函数将执行该算法

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