【发布时间】:2016-11-15 13:47:43
【问题描述】:
我正在查看reference manual,但找不到任何按位运算/函数的文档。
有什么方法可以在 Pig 脚本中使用,例如,按位与运算(相当于 Hive 中的“A & B”)?
【问题讨论】:
-
如果没有直接支持,可以使用DEFINE调用perl、bash等外部脚本。创建bitwise_or、bitwise_and等简单脚本
标签: apache-pig
我正在查看reference manual,但找不到任何按位运算/函数的文档。
有什么方法可以在 Pig 脚本中使用,例如,按位与运算(相当于 Hive 中的“A & B”)?
【问题讨论】:
标签: apache-pig
您可以为此提供自定义 UDF。例如。见https://pig.apache.org/docs/r0.7.0/udf.html
在猪脚本中你会这样做
REGISTER myudfs.jar;
BinaryAND UDF 的例子:
package myudfs;
import java.io.IOException;
import org.apache.pig.EvalFunc;
import org.apache.pig.data.Tuple;
import org.apache.pig.impl.util.WrappedIOException;
public class BitwiseAND extends EvalFunc (Integer)
{
public String exec(Tuple input) throws IOException {
// check input tuple:
if (input == null || input.size() < 2)
return null;
try{
return (Integer)input.get(0) & (Integer)input.get(1);
}catch(Exception e){
throw WrappedIOException.wrap("Caught exception processing input row ", e);
}
}
}
注意:这未经测试,只是从 pig udf 页面复制而来。
【讨论】: