需求
百亿级数据实时查询,数据有两列:电话MD5(rowkey CELLPHONE_MD5)、电话( CELLPHONE)
创建Hbase表
可以通过两种方式连接Hbase:phoenix 或者hbase shell
phoenix可以提供类sql的方式进行hbase的操作,容易接受一些
hbase shell 通过hbase相关命令操作,相对复杂
phoenix提供相对格式化的输出,比较美观(例如执行查看所有表操作,phoneix输出的结果以table形式展现,而hbase shell通过字符串形式展现)。
需要注意的是,在phoenix中执行建表命令时会将小写的表名、字段名转换为大写,所以如果在程序中或者Hbase shell中使用相关表是需要注意大小写问题。
phoenix
linux console执行以下命令,进入phoenix:
[root@mmbps1 ~]# /opt/cloudera/parcels/CLABS_PHOENIX/bin/phoenix-sqlline.py zookeeper地址:2181:/hbase
hbase shell
linux console执行以下命令,进入hbase shell:
[root@mmbps1 ~]# hbase shell
命令对比
操作
phoenix
hbase shell
查看表结构
!describe 表名
describe '表名'
查看表是否存在
!table 表名
exists '表名'
列出所有表
!tables
describe '表名'
查看表结构
!describe 表名
list
创建表
CREATE TABLE IF NOT EXISTS cellphone_md5_info(cellphone_md5 varchar PRIMARY KEY ,列簇.cellphone varchar);
create 'cellphone_md5_info_test','cellphone_md5','cellphone'
删除表
drop table 表名
disable '表名' 然后再 drop '表名'
查询数据总量
当单表数据小于百万行,可以通过select count(1) from table;当单表数据过大,不宜在phoenix中执行,请在hbase shell中查询
当单表数据小于百万,可以通过在hbase shell中执行count命令统计:count '表名';当单表数据过大,通过开启mapreduce 任务进行统计:在linux shell中执行(注意不是hbase shell中): hbase org.apache.hadoop.hbase.mapreduce.RowCounter 'CELLPHONE_MD5_INFO'
hbase通过mapreduce统计表总量
spark-java插入hbase
pom.xml
通过maven-shade-plugin插件,让maven打jar包时包含导入的jar包,否则的话打jar包时不会将引用的jar包一并打包
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocati