zoukankan      html  css  js  c++  java
  • HBase客户端API操作

    命令行(hbase shell)

    hbase shell进入客 户端

    [hadoop@pg1 ~]$ hbase shell
    SLF4J: Class path contains multiple SLF4J bindings.
    SLF4J: Found binding in [jar:file:/ups/app/hbase/lib/slf4j-log4j12-1.7.25.jar!/org/slf4j/impl/StaticLoggerBinder.class]
    SLF4J: Found binding in [jar:file:/ups/app/hadoop/share/hadoop/common/lib/slf4j-log4j12-1.7.25.jar!/org/slf4j/impl/StaticLoggerBinder.class]
    SLF4J: See http://www.slf4j.org/codes.html#multiple_bindings for an explanation.
    SLF4J: Actual binding is of type [org.slf4j.impl.Log4jLoggerFactory]
    HBase Shell; enter 'help<RETURN>' for list of supported commands.
    Type "exit<RETURN>" to leave the HBase Shell
    Version 1.3.6, r806dc3625c96fe2cfc03048f3c54a0b38bc9e984, Tue Oct 15 01:55:41 PDT 2019
    
    hbase(main):001:0>
    

    exit 退出 hbase shell 客户端

    表结构操作

    • create:创建
    • list:查看表列表
    • desc:查看表的详细信息
    • drop:删除表
    • truncate:清空表
    • alter:修改表的定义

    create

     help 'create'
     
     # t1是表名,f1,f2,f3是列簇的名
     create 't1', {NAME => 'f1'}, {NAME => 'f2'}, {NAME => 'f3'}
     
     # 创建了一个名为myHbase的表,表里面有1个列簇,名为myCard,保留5个版本信息
     create 'myHbase',{NAME => 'myCard',VERSIONS => 5}
    

    list

    hbase(main):046:0> list
    TABLE                                    
    myHbase                                                                             t1                                                                                                                               
    2 row(s) in 0.0450 seconds
    
    => ["myHbase", "t1"]
    hbase(main):047:0>
    

    desc

    hbase(main):047:0> desc 'myHbase'
    Table myHbase is ENABLED
    myHbase                 
    COLUMN FAMILIES DESCRIPTION                                                                                                      
    {NAME => 'myCard', BLOOMFILTER => 'ROW', VERSIONS => '5', IN_MEMORY => 'false', KEEP_DELETED_CELLS => 'FALSE', DATA_BLOCK_ENCODIN
    G => 'NONE', TTL => 'FOREVER', COMPRESSION => 'NONE', MIN_VERSIONS => '0', BLOCKCACHE => 'true', BLOCKSIZE => '65536', REPLICATIO
    N_SCOPE => '0'}         
    1 row(s) in 0.0740 seconds
    
    hbase(main):048:0>
    

    修改表定义

    添加一个列簇
    alter 'myHbase', NAME => 'myInfo'
    
    删除一个列簇
     alter 'myHbase', NAME => 'myCard', METHOD => 'delete'
     
     alter 'myHbase', 'delete' => 'myCard'
    
    添加列簇hi同时删除列簇myInfo
    alter 'myHbase', {NAME => 'hi'}, {NAME => 'myInfo', METHOD => 'delete'}
    

    truncate

    truncate 'myHbase'
    

    drop

    先停用表,再删除

    disable 'myHbase'
    drop 'myHbase'
    

    表数据操作

    • 增:put
    • 删:delete
    • 查:get + scan
    • 改:==

    创建 user 表,包含 info、data 两个列簇

    create 'user_info',{NAME=>'base_info',VERSIONS=>3 },{NAME=>'extra_info',VERSIONS=>1 } 
    

    需要传入表名,rowkey,列簇名、值等

    向 user 表中插入信息,row key 为 user0001,列簇 base_info 中添加 name 列标示符,值为 zhangsan1

    put 'user_info', 'user0001', 'base_info:name', 'zhangsan1'
    put 'user_info', 'zhangsan_20150701_0001', 'base_info:name', 'zhangsan1'
    put 'user_info', 'zhangsan_20150701_0002', 'base_info:name', 'zhangsan2'
    
    put 'user_info', 'zhangsan_20150701_0001', 'base_info:age', '21'
    put 'user_info', 'zhangsan_20150701_0002', 'base_info:age', '22'
    
    put 'user_info', 'zhangsan_20150701_0001', 'extra_info:Hobbies', 'music'
    put 'user_info', 'zhangsan_20150701_0002', 'extra_info:Hobbies', 'sport'
    

    查(get + scan)

    # 获取 user_info 表中 row key 为 user0001 的所有信息
    get 'user_info', 'user0001'
    
    # 获取user表中row key为user0001,base_info列簇的所有信息
    get 'user_info', 'user0001', 'base_info'
    
    # 查询user_info表中的所有信息
    scan 'user_info'
    
    # 查询user_info表中列簇为base_info的信息
    scan 'user_info', {COLUMNS => 'base_info'}
    

    # 删除user_info表row key为zhangsan_20150701_0001,列标示符为base_info:name的数据
    delete 'user_info', 'zhangsan_20150701_0001', 'base_info:name'
    
    scan 'user_info', {COLUMNS => 'base_info'}
    

    image-20200907155358110

    使用过滤器

    # 从mytable表中找到row1开头的所有row,那么就需要用到PrefixFilter
    scan 'user_info', { FILTER => "(PrefixFilter ('zhangsan'))"}
    
    # 使用KeyOnlyFilter
    scan 'user_info', { FILTER => "(KeyOnlyFilter ())"}
    
    # 使用 FirstKeyOnlyFilter()
    scan 'user_info', { FILTER => "FirstKeyOnlyFilter ()"}
    
    # 使用 MultipleColumnPrefixFilter()
    scan 'user_info', { FILTER => "MultipleColumnPrefixFilter('age','name')"}
    
    # 使用 ColumnCountGetFilter()
    scan 'user_info', { FILTER => "ColumnCountGetFilter(2)"}
    

    客户端API工具

  • 相关阅读:
    Python动态展示遗传算法求解TSP旅行商问题
    MOEAD算法中均匀权向量的实现---Python
    HDU 5294 多校第一场1007题 最短路+最小割
    POJ 3261 Milk Patterns sa+二分
    HDU 4292 FOOD 2012 ACM/ICPC Asia Regional Chengdu Online
    CodeForces 201A Clear Symmetry
    POJ 1679 The Unique MST 确定MST是否唯一
    POJ 3268 Silver Cow Party 最短路 基础题
    POJ 2139 SIx Degrees of Cowvin Bacon 最短路 水題
    POJ2229 Sumsets 基礎DP
  • 原文地址:https://www.cnblogs.com/binliubiao/p/13648448.html
Copyright © 2011-2022 走看看