前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Hadoop数据分析平台实战——090HBase shell客户端和Java Api介绍离线数据分析平台实战——090HBase shell客户端和Java Api介绍

Hadoop数据分析平台实战——090HBase shell客户端和Java Api介绍离线数据分析平台实战——090HBase shell客户端和Java Api介绍

作者头像
Albert陈凯
发布2018-04-08 11:13:28
8550
发布2018-04-08 11:13:28
举报
文章被收录于专栏:Albert陈凯Albert陈凯Albert陈凯

离线数据分析平台实战——090HBase shell客户端和Java Api介绍

HBase 命令介绍

HBase命令主要分为两大类, 第一类是指操作hbase表的相关的shell命令; 第二类是提供hbase其他相关服务的命令。 第一类命令全部在hbase shell命令中, 第二类命令主要以thrift/thrift2等服务为主。

image.png

HBase Shell命令介绍

HBase的Shell命令是以JRuby为核心编写的, 主要分为DDL和DML两大类, 除此两类之外还有一起其他的命令运维相关的命令, 比如snapshots等。 当我们进入hbase的shell命令客户端的时候,我们可以通过help命令查看帮助信息,也可以通过help命令查看具体命令的使用方法。

status命令

作用:查看hbase集群状态信息。 参数:simple,summary,detailed;默认是summary。

image.png

命名空间相关命令

作用:

类似关系型数据库中的database,作用是将hbase的表按照业务作用分割开,有益于维护。 Hbase默认有两个命名空间,分别是hbase和default。其中hbase命名空间存储hbase自身的表信息,default存储用户创建的表。

命令:

create_namespace(创建命名空间), alter_namespace(命名空间修改), describe_namespace(显示命名空间描述信息), drop_namespace(删除命名空间), list_namespace(显示所有命名空间), list_namespace_tables(显示对于命名空间中的table名称)。

namespace相关命令

create_namespace命令
作用:

创建命名空间。

示例:
create_namespace 'bigdater', {'comment'=>'this is ourself namespace','keyname'=>'valuename'}

image.png

drop_namespace命令
作用:

删除指定命名空间;注意删除的命名空间内不能有table存在,也就是说只能删除空的namespace。

示例:

drop_namespace 'bigdater'

image.png

describe_namespace命令

作用:显示命名空间的相关信息。 示例:describe_namespace 'bigdater'

image.png

list_namespace命令

作用:显示所有存在的命名空间。 示例:list_namespace或者list_namespace 'regex_str'

image.png

list命令

作用: 显示hbase表名称,类似mysql中的show tables; 可以通过指定命名空间来查看对应命名空间中的表,默认是显示所有用户表,也支持模糊匹配。 类似命令list_namespace_tables查看对应命名空间内有那些表。

创建hbase用户表

命令格式: create '[namespace_name:]table_name', 'family_name_1',....'family_name_n' 如果不给定namespace的名称,默认创建在default命名空间中。 示例: create 'bigdater:test','f'

image.png

删除用户表

删除用户表之前需要将表设置为disable的,然后才可以删除。其实在hbase中如果需要对已有表进行ddl操作,均需要将其disable,在ddl操作完成后,再进行enable操作即可。 命令格式: disable '[namespace_name:]table_name' drop '[namespace_name:]table_name' 示例: disable 'bigdater:test' drop 'bigdater:test'

image.png

put命令

在默认命名空间中创建users表,然后在这个表的基础上进行操作。 hbase的put命令是进行数据添加的命令。

命令格式: put '[namespace_name:]table_name', 'rowkey', 'family:[column]', 'value' [, timestamp] [, {ATTRIBUTES=>{'mykey'=>'myvalue'}, VISIBILITY=>'PRIVATE|SECRET'}] 示例:put 'users','row1','f:id','1'

get命令

get命令的作用是获取对应表中对应rowkey的数据。 默认获取最新版本的全部列数据,可以通过时间戳指定版本信息,也可以指定获取的列。 命令格式: get '[namespace_name:]table_name', 'rowkey' 示例:get 'users','row1'

scan命令

scan命令是hbase的另外一种检索方式,是通过范围查找hbase中的数据。 默认情况下是获取table的全部数据,可以通过指定column和filter等相关信息进行数据的过滤。 命令格式: scan '[namespace_name:]table_name' 示例:scan 'users'

scan-filter相关命令

scan提供多种filter命令,常用filter命令如下:ColumnPrefixFilterMultipleColumnPrefixFilterRowFilterSingleColumnValueFilterSingleColumnValueExcludeFilter等。 需要注意的是: 在指定的value之前需要加'binary:',比如: scan 'users',{FILTER=>"SingleColumnValueFilter('f','id',=,'binary:1)"}

scan其他参数

scan命令除了使用filter外,我们还可以定义我们需要的column,开始扫描的rowkey,结束扫描的rowkey,获取行数等信息。 eg: scan 'users', {COLUMN=>['f:id','f:name']} scan 'users', {STARTROW=>'row1',ENDROW=>'row2'} scan 'users', {LIMIT=>1}

count命令

count命令是统计hbase表行数的一个命令,由于相当于一个内置的mapreduce程序,所以当数据量比较大的时候可以选择使用协处理器方式计算行数。 命令格式: count '[namespace:]table_name' [INTERVAL => 1000,] [CACHE => 10] 默认情况下INTERVAL是1000(间隔数),CACHE是10。

delete命令

delete命令是删除指定table的指定rowkey的指定列,也就是说delete命令适合删除列的情况。 命令格式: delete '[namespace:]table_name', 'rowkey', 'family:column' 如果需要删除当然rowkey的所有列数据,那么可以使用deleteall命令。

truncate命令

truncate命令的作用是清空数据库,当我们数据库中的数据比较多的时候,我们可以选择该命令将数据库清空。 命令格式: truncate '[namespace_name:]table_name'

Java客户端

Java客户端其实就是shell客户端的一种实现,操作命令基本上就是shell客户端命令的一个映射。 Java客户端使用的配置信息是被映射到一个HBaseConfiguration的实例对象中的,当使用该类的create方法创建实例对象的时候,会从classpath路径下获取hbase-site.xml文件并进行配置文件内容的读取,同时会读取hadoop的配置文件信息。 也可以通过java代码指定命令信息,只需要给定zk的相关环境变量信息即可。

代码如下:

Configuration config = HBaseConfiguration.create();
config.set("hbase.zookeeper.quorum", "hh");

HBaseAdmin

HBaseAdmin类是主要进行DDL操作相关的一个接口类,主要包括命名空间管理,用户表管理。 通过该接口我们可以创建、删除、获取用户表,也可以进行用户表的分割、紧缩等操作。

Put,Get,Scan,Delete

Put类是专门提供插入数据的类。 Get类是专门提供根据rowkey获取数据的类。 Scan是专门进行范围查找的类。 Delete是专门进行删除的类。

HBase连接池

在web应用中,如果我们之间使用HTable来操作hbase,那么在创建连接和关闭连接的时候,一定会浪费资源。 那么HBase提供了一个连接池的基础,主要涉及到的类和接口包括:HConnection,HConnectionManager,HTableInterface,ExecutorService四个。 其中HConnection就是hbase封装好的hbase连接池,HConnectionManager是管理连接池的一个类,HTableInterface是在类HTable的基础上进行的一个接口抽象。 ExecutorService是jdk的线程池对象。

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2017.08.31 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 离线数据分析平台实战——090HBase shell客户端和Java Api介绍
    • HBase 命令介绍
      • HBase Shell命令介绍
        • status命令
          • 命名空间相关命令
            • namespace相关命令
              • list命令
                • 创建hbase用户表
                  • 删除用户表
                    • put命令
                      • get命令
                        • scan命令
                          • scan-filter相关命令
                            • scan其他参数
                              • count命令
                                • delete命令
                                  • truncate命令
                                    • Java客户端
                                      • HBaseAdmin
                                        • Put,Get,Scan,Delete
                                          • HBase连接池
                                          相关产品与服务
                                          领券
                                          问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档