Hbase thrift接口扩展mutation方法增加timestamp时间戳参数

        因为公司业务需要,我们使用了Fluentd收集日志,但是现在hbase的thrift接口中关于批量插入hbase的记录中不能设置每条记录的timestamp,满足不了业务的需要,所以和同事东杰合作,将thrift接口修改了,记录以备忘。同时,如果需要扩展thrift,也是一个很好的开始。

        首先,找到org.apache.haddop.hbase.thrift.generated.Mutation.java添加变量timestamp 类型为Long,里面有一个类型的设置,需要设置成I64;

private static final org.apache.thrift.protocol.TField TIMESTAMP_FIELD_DESC = new org.apache.thrift.protocol.TField(
			"timestamp", org.apache.thrift.protocol.TType.I64, (short) 4);
//还有其他很多的timestamp代码新增。

        然后,找到org.apache.haddop.hbase.thrift.ThriftServer.java,在put.add()方法中增加变量timestamp,取值为m.timestamp。

put.add(famAndQf[0], HConstants.EMPTY_BYTE_ARRAY,m.timestamp,
                  m.value != null ? m.value.array()
                      : HConstants.EMPTY_BYTE_ARRAY);
        下一步,备份hbase.jar包,将上述两个文件的编译文件替换。

        重启hbase。

        启动thrift服务:      

$ hbase thrift start  
         从网上下载thrift的jar包:thrift-0.9.0.tar.gz ,解压,并编译。

         在hbase的下载目录中找到Hbase.thrift文件,拷贝到一个目录下,修改该文件,添加timestamp及i64类型保存。

struct Mutation {
  1:bool isDelete = 0,
  2:Text column,
  3:Text value,
  4:i64 timestamp
}

         执行命令:

$ thrift --gen py/rb/php Hbase.thrift


         会生成一个gen-py/rb/php的目录。

         接下来,你就可以使用mutation的

mutations.append(Hbase.Mutation(column="f1:%s"%ii, value=self.columnvalue, timestamp=20130101005959))
替换

mutations.append(Hbase.Mutation(column="f1:%s"%ii, value=self.columnvalue))


          


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值