分享

修改Hbase时间戳

舒克 发表于 2017-3-13 21:45:34 [显示全部楼层] 回帖奖励 阅读模式 关闭右栏 12 20683
我现在有一些历史数据,从oracle导入到hbase中,我想将原来中的时间作为Hbase的时间戳  ,不知道如何来实现?

已有(12)人评论

跳转到指定楼层
舒克 发表于 2017-3-15 10:58:30
einhep 发表于 2017-3-13 22:19
put.add(Bytes.toBytes(colFamily.getColumnFamilyName()),
               Bytes.toBytes(col.getColumnN ...

不好意思,我是新手,这个 getTimeStamp()方法是自己封装的吗?  是要生成和系统时间戳一样按毫秒来计算的格式的吗?
回复

使用道具 举报

einhep 发表于 2017-3-13 22:19:18
put.add(Bytes.toBytes(colFamily.getColumnFamilyName()),
               Bytes.toBytes(col.getColumnName()),
                col.getTimeStamp(), Bytes.toBytes(col.getValue()));
可以采用上面方法。
不过会有副作用,参考下面帖子
Hbase手动设置时间戳,无法删除数据,怎么办?
http://www.aboutyun.com/forum.php?mod=viewthread&tid=19864


回复

使用道具 举报

nextuser 发表于 2017-3-14 15:58:46
einhep 发表于 2017-3-13 22:19
put.add(Bytes.toBytes(colFamily.getColumnFamilyName()),
               Bytes.toBytes(col.getColumnN ...



楼主可以使用下面put或则add直接添加时间戳即可
指定行键和时间戳

public Put(byte[] row, long ts)

参数: row 行键, ts 时间戳


从目标字符串中提取子串,作为行键,并加上时间戳

Put(byte[] rowArray, int rowOffset, int rowLength, long ts)


指定 列族、限定符、时间戳 ,添加值

add(byte[] family, byte[] qualifier, long ts, byte[] value)

回复

使用道具 举报

舒克 发表于 2017-3-15 10:35:38
我是刚开始接触hbase,本来是想着通过sqoop来将oracle导入到hbase ,但sqoop好像没有更改时间戳的命令吧,但是要是这样的话  那是不是只能使用Java API进行批量插入的时候来自定义插入时间戳了
回复

使用道具 举报

舒克 发表于 2017-3-15 10:36:17
本帖最后由 舒克 于 2017-3-15 10:38 编辑
nextuser 发表于 2017-3-14 15:58
楼主可以使用下面put或则add直接添加时间戳即可
指定行键和时间戳

我是刚开始接触hbase,本来是想着通过sqoop来将oracle导入到hbase ,但sqoop好像没有更改时间戳的命令吧,但是要是这样的话  那是不是只能使用JDBC读取到oracle中的数据,然后通过Hbase Java API进行批量插入的时候来自定义插入时间戳?

回复

使用道具 举报

hyj 发表于 2017-3-15 11:11:23
舒克 发表于 2017-3-15 10:58
不好意思,我是新手,这个 getTimeStamp()方法是自己封装的吗?  是要生成和系统时间戳一样按毫秒来计算 ...

你不是有时间列吗?把这个时间放到时间戳参数对应的位置试下
回复

使用道具 举报

舒克 发表于 2017-3-15 19:43:23
einhep 发表于 2017-3-13 22:19
put.add(Bytes.toBytes(colFamily.getColumnFamilyName()),
               Bytes.toBytes(col.getColumnN ...

非常感谢,摸索了大半天,终于弄好了
回复

使用道具 举报

舒克 发表于 2017-3-15 19:45:01
nextuser 发表于 2017-3-14 15:58
楼主可以使用下面put或则add直接添加时间戳即可
指定行键和时间戳

非常感谢  ,弄好了
回复

使用道具 举报

yuwenge 发表于 2017-3-16 09:29:33
舒克 发表于 2017-3-15 19:45
非常感谢  ,弄好了

public Put(byte[] row, long ts)是这样吗?
比如
Put(00001,20170316)

回复

使用道具 举报

12下一页
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

推荐上一条 /2 下一条