Apache Pig 中的按位运算?
Posted
技术标签:
【中文标题】Apache Pig 中的按位运算?【英文标题】:Bitwise operations in Apache Pig? 【发布时间】:2016-11-15 13:47:43 【问题描述】:我正在查看reference manual,但找不到任何按位运算/函数的文档。
有什么方法可以在 Pig 脚本中使用,例如,按位与运算(相当于 Hive 中的“A & B”)?
【问题讨论】:
如果没有直接支持,可以使用DEFINE调用perl、bash等外部脚本。创建bitwise_or、bitwise_and等简单脚本 【参考方案1】:您可以为此提供自定义 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 页面复制而来。
【讨论】:
以上是关于Apache Pig 中的按位运算?的主要内容,如果未能解决你的问题,请参考以下文章