天天看点

HBase API(Java)之对HBase表,命名空间等的操作

项目源码:https://github.com/cw1322311203/hbasedemo/tree/master/hbase-api

一,环境准备

二,HBaseAPI

2.1 获取Configuration对象

2.2 判断表是否存在

2.3 创建表

2.4 删除表

2.5 向表中插入数据

2.6 删除多行数据(三种标记)

2.7 获取所有数据

2.8 获取某一行数据

2.9 获取某一行指定“列族:列”的数据

三,HBaseUtils工具类

1.第一种工具类

2.第二种工具类:使用本地线程池方式

3.第三种工具类

具体代码在GitHub: https://github.com/cw1322311203/hbaseapi

新建项目后在pom.xml中添加依赖:

删除有三种标记

Delete标记: 删除特定列列指定的版本

DeleteFamily标记: 删除特定列族所有列

DeleteColumn标记: 删除特定列的所有版本

指定rowkey: 使用DeleteFamily标记

不加时间戳表示删除[指定rowkey]的所有数据

加时间戳表示删除[指定rowkey]中[时间戳版本小于或等于指定时间戳]的所有数据

指定rowkey+columnFamily: 使用DeleteFamily标记

不加时间戳表示删除[指定列族]的所有数据

加了时间戳就表示删除[指定列族]下[时间戳版本小于或等于指定时间戳]的所有数据

指定rowkey+columnFamily+column(addColumns): 使用DeleteColumn标记

不加时间戳表示删除[指定列]所有版本的数据

加时间戳表示删除[指定列]中[时间戳版本小于或等于指定时间戳]的所有数据

指定rowkey+columnFamily+column(addColumn): 使用Delete标记 (只删除单个版本数据,生产环境尽量别用)

不加时间戳表示删除[指定列]中[最新版本]的数据

加时间戳表示删除[指定列]中[指定时间戳版本]的数据

不推荐的原因是:操作不同(如flush前后操作产生的结果会不一样)结果可能不同

在flush前如果有多个版本的数据,此时进行addColumn(不加时间戳)操作,会将最新版本的数据删除,然后老版本的数据会出现

在flush后进行addColumn(不加时间戳)操作,会将最新版本的数据删除,而此时flush已将老版本的数据进行了删除,所有此时老版本的数据就不会出现了