zoukankan      html  css  js  c++  java
  • Hbse常用命令

    1、Hbase shell客户端使用

           a、进入客户端 hbase shell

           b、常用命令

                 list  列出Hbase中存在的所有表

                 alter 修改列簇(column family)模式

                 count  统计表中行的数量

                 create 创建表

                 describe 显示表相关的详细信息

                 delete 删除指定对象的值(可以为表,行、列对应的值,另外也可以指定时间戳的值)

                 deleteall  删除指定行的所有元素值

                 disable 使表无效

                 drop 删除表

                 enable 使表有效

                 exists 测试表是否存在

                 exit 退出Hbaseshell

                 get 获取行或单元(cell)的值

                 incr 增加指定表,行或列的值

                 put 向指向的表单元添加值

                 tools列出Hbase所支持的工具

                 scan 通过对表的扫描来获取对用的值

                 status 返回Hbase集群的状态信息

                 shutdown 关闭Hbase集群(与exit不同)

          c、关于表: (创建表create、查看表列表list、查看表的详细信息desc、删除表drop、清空表truncate、修改表的定义alter、)

          d、关于数据的操作(增put、删delete、查get + scan,改=变相的增加)

          e、查看有哪些命令: help;如果哪个命令不会使用 help "command"                     

    2、操作例子

           a、创建表student和stu

                create 'student','cf1'

                create 'stu','cf1','cf2','cf3'

               查看表的描述: desc 'student'

                一个大括号就相当于一个列簇: {NAME => 'cf1', VERSIONS => '1', EVICT_BLOCKS_ON_CLOSE => 'false', NEW_VERSION_BEHAVIOR => 'false', KEEP_DELETED_CELLS => 'FALSE', CACH
    E_DATA_ON_WRITE => 'false', DATA_BLOCK_ENCODING => 'NONE', TTL => 'FOREVER', MIN_VERSIONS => '0', REPLICATION_SCOPE => '0', BLOOMFILTER
     => 'ROW', CACHE_INDEX_ON_WRITE => 'false', IN_MEMORY => 'false', CACHE_BLOOMS_ON_WRITE => 'false', PREFETCH_BLOCKS_ON_OPEN => 'false',
     COMPRESSION => 'NONE', BLOCKCACHE => 'true', BLOCKSIZE => '65536'}

              

                stu插入一条数据:

                put 'stu','rk001','cf1:age','18'

                put 'stu','rk001','cf1:name','zhangsan'  发现hdfs中stucf1下没有内容去观察对应表的region在那一台服务器上杀掉regionserver之后就会有了...

                scan 'stu'

               解释:/hbase/data/default/stu/8ca25fe0d49972b2efb4c36537daf1a2/cf1/d89f620da4754e1092402b577f589f8a

                      data:目录即是Hbase自动生成的用来存储所有表数据的一个目录

                      default:默认的一个namespace

                      stu:就是一张表,其实就是一个文件夹

                      8ca25fe0d49972b2efb4c36537daf1a2:就是stu这张表中的一个region

                      cf1:就是这个region中第一个列簇所对应的一个store

                      d89f620da4754e1092402b577f589f8a:这就是用来存储真实数据的hfile

           b、创建表指定版本

            create 'stu2',{NAME => 'cf1', VERSIONS => 5},{NAME => 'cf2', VERSIONS => 2}    cf1下任何一个key-value最多版本5个

            放入数据:

           put 'stu2','rk01','cf1:age',18

           put 'stu2','rk01','cf1:age',19

           put 'stu2','rk01','cf1:age',20

           put 'stu2','rk01','cf1:age',21

          put 'stu2','rk01','cf1:name','lisi'

           get 'stu2','rk01' 出现:(默认的情况下是最新的值,get指定rowkey,scan )

                  COLUMN                             CELL                                                                                                
                   cf1:age                           timestamp=1552348396259, value=21                                                                   
                   cf1:name                          timestamp=1552348699286, value=lisi                                                                 
                  1 row(s)
                  Took 0.0201 seconds

         put 'stu2','rk01','cf1:age',22

         get 'stu2','rk01',{COLUMN => 'cf1:age', VERSIONS => 5}

         put 'stu2','rk01','cf1:age',23

         get 'stu2','rk01',{COLUMN => 'cf1:age', VERSIONS => 5}  18不出现了

         get 'stu2','rk01',{COLUMN => 'cf1:age', TIMESTAMP => 1552348396259}  根据时间戳获取唯一的一个

         put 'stu2','rk01','cf2:p','xxxxxx'

         get 'stu2','rk01','cf2'

        查询分页:

                        scan  'stu2',{COLUMNS => 'cf1:age'}

                        scan  'stu2',{COLUMNS => 'cf1:age', LIMMIT 10, STARTROW => 'xx'}

        删除某个时间戳的: delete 'stu2','rk01','cf1:age',1552348396259;这个时间戳以前的数据都被删除了

        put命令的使用:

                                put 表 行健 列定义 值

                                put 'stu2','rk01','cf1:age',22

                                get  表  行健

                                get  表  行健  列簇 

                                get  表  行健  列簇:列 

                                get  表  行健  列簇:列  时间戳

                                scan  表

                                scan  表  起始行健  结束行健

                                scan  表  列簇

                                scan  表  列簇:列

           c、删除表

                 disable 'student'

                 drop 'student'

           d、清空truncate 'stu'   删除数据key-value也删除

                 drop  == 情况数据truncate + 删除表定义

           e、Hbase的表一经创建之后,那么列簇的名字就不能更改了,列簇的属性可以改。

                 如果说列簇的名字指定有误,可以通过线删除列簇,然后添加回来。

                 但是你必须要承受,损失这个列簇数据的代价。

           f、修改alter

               1、增加一个列簇

                        alter 'stu2',NAME=>'f1',VERSIONS=>4  增加一个列簇f1,每个region会多一个store

                        Updating all regions with the new schema...
                        1/1 regions updated.
                        Done.
                        Took 2.8088 seconds

               2、删除一个列簇

                     alter 'stu2', NAME => 'cf1',METHOD => 'delete'

                     alter 'stu2', 'delete' => 'f1'

           g、show_filters 查看所有过滤器

           h、往HBase插入数据的五种方式

                     1、table.put(put)

                     2、table.put(puts)

                     3、MR

                     4、多线程多客户端并发写入

                     5、bulkload 其实是使用MR程序提前生成好HFile

                                      1、首先往WAL LOG中记录日志数据

                                      2、把数据更新到内存

                                      3、内存达到一定的值,就会flush数据到磁盘HFile

                                      4、Hfile达到一定数据之后,就会进行合并,storefile

  • 相关阅读:
    android 使用adb重新建立 eclipse和模拟器间的连接
    android ADB server didn't ACK
    Android getSystemService()
    Android隐藏标题栏
    Android 与WCF REST 服务联调
    Eclipase 无法启动,启动界面显示完版本号之后无响应
    调用WCF REST服务时,使用JSON
    org.apache.http.conn.HttpHostConnectException: Connection to refused
    SqlServer跨域查询
    ASP.net导出Excel的几种方式
  • 原文地址:https://www.cnblogs.com/zzmds/p/14161058.html
Copyright © 2011-2022 走看看