• 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学习(9)字典的基本应用
    python学习(8)实例:写一个简单商城购物车的代码
    python学习(7)关于列表操作相关命令以及浅复制深复制
    python学习(6)选择排序算法简单代码
    python学习(5)写一个二分算法的程序
    python学习(4)循环语句
    添加页面+正则+三级联动
    SSM整合多对多表关系
    dubbo整合ssm
    爬虫爬取文章
  • 原文地址:https://www.cnblogs.com/binliubiao/p/13648448.html
Copyright © 2020-2023  润新知