在线支持
在线支持
微信支持
微信支持
Hyperbase基本用法(Hbase Shell)
2022-12-14 15:35:23
94次阅读
0个评论

Hyperbase交互有以下三种方式:

SQL(推荐方式):我们的SQL引擎Inceptor Engine提供了丰富的SQL语法,并对SQL的执行进行了充分的优化,使用SQL和Hyperbase交互在正确性和性能方面都有很好的保证。

Shell:Hyperbase提供交互式Shell以及一系列Shell指令用于数据操作。

Java API:Hyperbase支持Apache Hyperbase原生的API,同时还提供多种自有的API。

本篇帖子将介绍基于Shell交互的最基础的使用方法,目的是让您可以迅速地熟悉Hyperbase shell 的使用方式。在安装了Hyperbase的节点上执行 hbase shell 操作可以进入命令行。下面介绍如何通过命令行进行一些简单操作,包括建表,插入数据,删除数据和删除表。

Note: 和SQL不同,Hyperbase Shell指令区分大小写,例如 create 指令不能写成 CREATE。


1. 进入Hyperbase命令行

步骤1 启动TDH Client,用hbase shell命令进入Hyperbase命令行。

source /root/TDH-Client/init.sh  // 执行init.sh脚本,启动TDH Client

步骤2 进入Hyperbase命令行

hbase shell

image.png


2. 创建表,并插入数据

步骤1 创建NameSpace

create_namespace '{namespace_user_name}'  

示例:

create_namespace 'namespace_yijie_test'  

image.png


步骤2 在当前NameSpace下创建表

create '{namespace_user_name}:{table_user_name}', 'column_family'  

示例:

create 'namespace_yijie_test:table_yijie','cf'

Note: Hyperbase中表 、 列族和列限定符名都要尽量短,以减少读写时的I/O负载。


步骤3 列出当前namespace下所有表

list_namespace_tables '{namespace_user_name}'  

示例:

list_namespace_tables 'namespace_yijie_test'

image.png


步骤4 插入数据

put '{namespace_user_name}:{table_user_name}', 'row_key', 'column_family:column_qualifier', 'cell_value'  

示例:

put 'namespace_yijie_test:table_yijie','row1','cf:a','value1'

put 'namespace_yijie_test:table_yijie','row2','cf:b','value2'

put 'namespace_yijie_test:table_yijie','row3','cf:c','value3'


3. 读取数据

步骤1 读取Cell

get '{namespace_user_name}:{table_user_name}', 'row_key'

示例:

get 'namespace_yijie_test:table_yijie','row1'


步骤2 读取前10行

scan '{namespace_user_name}:{table_user_name}',{LIMIT=>10} 

示例:

scan 'namespace_yijie_test:table_yijie',{LIMIT=>10}


步骤3 统计行数

count '{namespace_user_name}:{table_user_name}'

示例:

count 'namespace_yijie_test:table_yijie'

image.png


4. 修改表属性

步骤1 将表下线(禁用,要删除或者改设置需要先disable)

disable '{namespace_user_name}:{table_user_name}'


步骤2 更改表属性

alter '{namespace_user_name}:{table_user_name}', {<PROPERTY_1> => <value_1>, <PROPERTY_2> => <value_2>, ...}, {...}, ...

alter 可以用于添加和修改表或表中列族的元数据,可以同时修改多个列簇。使用 <PROPERTY> => <value> 的方式设置表或列族的属性。如果只修改一组元数据,可以不加 {};如果同时修改多组元数据(例如修改多个列族元数据),每组属性需要放在不同的 {} 中。

示例1

alter 'namespace_yijie_test:table_yijie',{NAME=>'cf',COMPRESSION => 'snappy', DATA_BLOCK_ENCODING => 'PREFIX'}

image.png


示例2

将表t1中的列簇f1改为常驻内存, 并将列簇f2的版本改为5:

alter 't1', {NAME => 'f1', IN_MEMORY => true}, {NAME => 'f2', VERSION => 5}


步骤3 将表上线

enable '{namespace_user_name}:{table_user_name}'

示例

enable 'namespace_yijie_test:table_yijie'


步骤4 查看表属性

desc '{namespace_user_name}:{table_user_name}'

示例

desc 'namespace_yijie_test:table_yijie'

image.png


5. 表的分裂

步骤1 插入数据

put 'namespace_yijie_test:table_yijie', 'row4', 'cf:a', 'value4'

put 'namespace_yijie_test:table_yijie', 'row5', 'cf:b', 'value5'

put 'namespace_yijie_test:table_yijie', 'row6', 'cf:c', 'value6'


步骤2 将数据溢写磁盘

flush 'namespace_yijie_test:table_yijie'


步骤3 分裂表

split 'namespace_yijie_test:table_yijie', 'row3'


6. 导出表属性到本地文件

利用describeInJson命令将表属性导出到本地Json文件,并查看表属性。

步骤1 将表属性导出到本地Json文件

describeInJson '{namespace_user_name}:{table_user_name}','true','/transwarp/Desktop/hbase.json'

exit


步骤2 查看表属性文件

cat /transwarp/Desktop/hbase.json


7. 查看META表

语法

scan 'hbase:meta'


8. 删除表

需要先将表下线,再删除。

disable '{namespace_user_name}:{table_user_name}'

drop '{namespace_user_name}:{table_user_name}'


9. Hyperbase数据导入

Waterdrop中创建Hyperdrive内表,并建立外表,将数据导入到内表中。


步骤1 在Inceptor中创建外表

SQL:

use {database_name};

drop table if exists hyper_external_table;

create external table hyper_external_table(

rowkey string,

num int,

country int,

rd string)

row format delimited fields terminated by ','

location '/images/hyper_data';


步骤2 Inceptor中创建Hyperbase内表

drop table if exists hyper_table;

create table hyper_table(

rowkey string,

num int,

country int,

rd string)

stored as hyperdrive;


步骤3 将Inceptor外表中的前100条数据导入到Hyperbase内表中

insert into hyper_table select rowkey,num,country,rd from hyper_external_table order by rowkey limit 100;

select * from hyper_table limit 10;




收藏 0 0

登录 后评论。没有帐号? 注册 一个。

admin

官方人员
  • 0 回答
  • 0 粉丝
  • 0 关注