本文将介绍如何使用HBase Shell操作HBase进行预分区。预分区是指在创建表的时候,指定表的初始分区点,从而使表的数据能够均匀地分布在多个RegionServer上,提高读写性能和负载均衡。本文将使用HBase Shell命令,创建不同的预分区表,并演示如何删除、刷新、查看和验证表的数据。
主要内容如下:
本文使用了HBase Shell命令,通过交互式方式操作HBase进行预分区。也可以使用Java API或其他语言API
hbase shell
create 't2', 'f1', SPLITS => ['1|', '2|', '3|']
该命令会创建一个名为t2的表,有一个列族f1,并且有四个初始分区,分别是:
可以使用不同的SPLITS参数,创建不同的预分区表。例如:
create 't3', 'f1', SPLITS => ['0', '1', '2']
create 't3index', 'f1'
create 't3index2', 'f1', SPLITS => [ '4', '7']
create 't3geo', 'f1', SPLITS => ['1', '2']
create 't3geo', 'f1', SPLITS => ['0', '1', '2']
create 't32', 'f1', SPLITS => ['0', '1', '2']
create 'tgeo3', 'f1', SPLITS => ['0', '1', '2']
create 't3feature', 'f1', SPLITS => ['0', '1', '2']
create 'rawdata', {NAME=>'f1',COMPRESSION=>'SNAPPY'},{SPLITS=> ['1', '2']}
该命令会创建一个名为rawdata的表,有一个列族f1,并且使用SNAPPY压缩方式,并且有三个初始分区,分别是:
deleteall 'test','row1'
该命令会删除test表中行键为row1的所有数据。
使用truncate命令,删除表中所有数据,并重新创建空表。该命令接受表名作为输入。例如:
truncate 'test'
flush 't3feature'
写入HBase少量数据spark可能读取不到,刷写到HDFS之后可解决。
scan 't3feature'
该命令会扫描t3feature表的所有数据,并显示行键和列值。
可以使用COLUMNS参数,指定要扫描的列族或列名。例如:
scan 't3feature',{COLUMNS=>'f1:2020-11NDVI'}
scan 'hbase:meta'
从上图可看出region均匀的分布在了3台regionserver上(集群就3台机器regionserver),达到预期效果。还可以在hbase的web UI界面中更加直观的查看建表的预分区信息。
该命令会扫描hbase:meta表的所有数据,并显示每个表的分区点和所在的RegionServer。
可以使用grep命令,过滤出某个表的分区信息。例如:
scan 'hbase:meta' | grep t3feature