hbase - Pig + Hbase 原子增量列值

标签 hbase apache-pig

我正在尝试将 Hbase 原子增量列读入 Pig 并以 Long 值访问它。

但是列值使用Hbases Hex like结构:\x00\x00\x00\x00\x00\x00\x00\x01

有谁知道在 Pig 中将其转换为等同于 get_counter 值的方法:1

我已经发布了一个使用 UDF 的解决方案:

import java.io.IOException;
import org.apache.pig.EvalFunc;
import org.apache.pig.backend.executionengine.ExecException;
import org.apache.pig.data.DataByteArray;
import org.apache.pig.data.DataType;
import org.apache.pig.data.Tuple;
import org.apache.pig.impl.logicalLayer.schema.Schema;


public class ConvertToLong extends EvalFunc<Long> {

@Override
public Long exec(Tuple input) throws IOException {

    if (input == null || input.size() == 0) {
        return null;
    }

    try {

        long value = 0;
        DataByteArray dba = (DataByteArray)input.get(0);
        System.out.println( dba.toString() );
        byte[] ba = dba.get();

        for (int i = 0; i < ba.length; i++)
        {
            value = (value << 8) + (ba[i] & 0xff);
        }
        return value;
        //return value;
    } catch (ExecException e) {
        log.warn("Error reading input: " + e.getMessage());
        return 3L;
    } catch( Exception e ){
        log.warn("Error:" + e.getMessage() );
        return 2L;
    }
}

@Override
public Schema outputSchema(Schema input) {
    return new Schema(new Schema.FieldSchema(null, DataType.LONG));
}
}

最佳答案

您不需要 UDF 即可从 HBase 加载长整数。 您可以依赖 HBaseStorage 上的 -caster=HBaseBinaryConverter 选项。

例子: 我有一个名为 counters 的表,该值存储在 val:val 列下(使用将数据存储为 8 字节长的增量功能)。 列出 PIG 中的所有计数器:

counters = LOAD 'hbase://counters' USING org.apache.pig.backend.hadoop.hbase.HBaseStorage('val:val', '-caster=HBaseBinaryConverter -loadKey') AS (key:chararray, val:long);
DUMP counters

关于hbase - Pig + Hbase 原子增量列值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9585887/

相关文章:

java - hdp :configuration in Spring Boot annotation? 相当于什么

hadoop - 为区域服务器(HBase)寻找事件线程

java - 如何使用eclipse编写并执行PIG Latin

hadoop - 节点/hbase 不在 ZooKeeper 中

java - php和flume直接集成还是php和java集成?

hadoop - PIG-Hbase-RowKeyDistributorByHashPrefix-DistributedScanner

hadoop - 构建 Apache Pig for Hadoop 2.4 版本

performance - pig 和 hive 脚本性能分析教程

hadoop - 按 pig 中的相同值对数据包进行分组

hadoop - 从PIG中的别名加载数据