这就是我处理数据的方式。。来自Pig。。
A = Load 'data' ...
B = FOREACH A GENERATE my.udfs.extract(*);
or
B = FOREACH A GENERATE my.udfs.extract('flag');
所以基本上,extract要么没有参数,要么接受参数…''旗帜'
在我的自定义项方面。。。
@Override
public DataBag exec(Tuple input) throws IOException {
//if flag == true
//do this
//else
// do that
}
现在如何在pig中实现这一点?
1条答案
按热度按时间r6l8ljro1#
首选方法是使用define。
、使用define指定udf函数时:
...
函数的构造函数接受字符串参数。如果需要对函数的不同调用使用不同的构造函数参数,则需要创建多个定义–每个参数集一个“
例如:
给定以下自定义项:
然后
另一种选择(黑客?):
在本例中,udf使用其noarg构造函数示例化,并在其exec方法中传递要计算的标志。由于此方法将元组作为参数,因此需要首先检查第一个字段是否为布尔标志。
然后
我宁愿坚持第一种解决办法,因为这有味道。