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 中的按位运算?的主要内容,如果未能解决你的问题,请参考以下文章

c语言的按位运算符怎么操作!?

大位向量的按位运算

opencv中的按位运算

Masm 常量的按位运算

位掩码 - C中的按位运算

php.ini 中的按位运算符语法错误