datafu是linkedin(虽然我现在还没用过。。。)内部用到的一个pig udf的集合,稳定,经过良好的测试。
主要用于大规模数据挖掘和数据统计。
好吧,以上是官方说法,我花了一点时间扫了一下里面的udf(javadoc在这里,里面的东西好少),用途最大的大约是datafu.pig.bags包和datafu.pig.bags.sets里面的函数了,前者是针对bag类型的一些常见操作,后者弥补了pig中没有set操作的缺陷,虽然只有intersetc和union两个函数
剩下的包里面大约是我这辈子都不会用到的一些函数了,pagerank,haversinedist,不过应该能拿来做一些好玩儿的事情
顺便翻了一下里面的源码,util里面有些不错的东东
目测比较实用的有SimpleEvalFunc, 实现pig udf的exec要从Tuple arg0里面提取参数并转型,这样就涉及到类型检查之类的操作(实际上从来没做过类型检查= =, 但是吃过这方面的亏),这个函数把这一些检查操作进行了封装,只需要实现call函数,就会自动完成一些列的操作。
另外工具包里的代码都有着良好的实现,构造函数和outputSchema函数一应俱全,exception更是给的恰到好处,更是包含了平时不可能用到的Accumulator的实现,对于刚开始学习pig的人写udf应该会带来很大帮助。