HBase shell scan 模糊查詢

1、進入hbase shellshell

./hbase shell
    help
    help 「get」 #查看單獨的某個命令的幫助

2、 通常命令apache

status 查看狀態
    version 查看版本

3、DDL(數據定義語言Data Definition Language)命令緩存

1.建立表oop

 

create ‘表名稱’,’列名稱1’,’列名稱2’,’列名稱3’
如:
create 'member','member_id','address','info'

2.列出全部的表測試

list
spa

list 'abc.*' #顯示abc開頭的表

3.得到表的描述   3d

describe 'table_name'


 

   

Table play_error_file is ENABLED
    play_error_file
    column families description
    {
    NAME => 'cf',
    BLOOMFILTER => 'ROW',#根據應用來定,看須要精確到rowkey仍是column。bloom filter的做用是對一個region下查找記錄所在的hfile有用。一個region下hfile數量越多,bloom filter的做用越明顯。適合那種compaction(壓縮)趕不上flush速度的應用。
    VERSIONS => '1',# 一般是3,對於更新比較頻繁的應用能夠設置爲1
    IN_MEMORY => 'false',
    KEEP_DELETED_CELLS => 'FALSE',
    DATA_BLOCK_ENCODING => 'NONE',
    TTL => 'FOREVER',
    COMPRESSION => 'NONE',
    MIN_VERSIONS => '0',
    BLOCKCACHE =>'true',
    BLOCKSIZE => '65536',
    REPLICATION_SCOPE => '0'
    }

 4.刪除一個列族 alter,disable, enablecode

disable 'member'  #刪除列族時必須先將表給disable
    alter 'member',{NAME=>'member_id',METHOD=>'delete'}
    #刪除後繼續enable 'member'
    enable 'member'

5.刪除表   xml

disable 'table_name'
 drop 'table_name'

 6.查詢表是否存在blog

exists 'table_name'

7.判斷表是否enabled

is_enabled 'table_name'

8.更改表名  

//快照 這樣試試,先創建個表本身測試下,能夠的話在執行。
     
    須要開啓快照功能,在hbase-site.xml文件中添加以下配置項:
    <property>
    <name>hbase.snapshot.enabled</name>
    <value>true</value>
    </property>
    //命令
    hbase shell> disable 'tableName'
    hbase shell> snapshot 'tableName', 'tableSnapshot'
    hbase shell> clone_snapshot 'tableSnapshot', 'newTableName'
    hbase shell> delete_snapshot 'tableSnapshot'
    hbase shell> drop 'tableName'

   

4、DML(data manipulation language)操做
1.插入


在ns1:t1或者t1表裏的r1行,c1列中插入值,ts1是時間

   

put 'ns1:t1', 'r1','c1','value'
    or
    put 't1','r1','c1','value'
    or
    put 't1','r1','c1','value',ts1
    or
    put 't1','r1','c1','value',{ATTRIBUTES=>{'mykey'=>'myvalue'}}
    put 't1','r1','c1','value',ts1,{ATTRIBUTES=>{'mykey'=>'myvalue'}}
    put 't1','r1','c1','value',ts1,{VISIBILITY=>'PRIVATE|SECRET}
    # t是table 't1'表的引用
    t.put 'r1','c1','value',ts1,{ATTRIBUTES=>{'mykey'=>'myvalue'}}
    put 'table_name','row_index','info:age','24'
    put 'table_name','row_index','info:birthday','1987-06-17'
    put 'table_name','row_index','info:company','tencent'
    put 'table_name','row_index','address:contry','china'
    put 'table_name','row_index','address:province','china'
    put 'table_name','row_index','address:city','shenzhen'

2.獲取一條數據

   

# 獲取一個id的全部數據
    get 'table_name','row_index'
     
    # 獲取一個id,一個列族的全部數據
    get 'table_name','row_index','info'
     
    # 獲取一個id,一個列族中一個列的全部數據
    get 'table_name','row_index','info:age'

3.更新一條記錄

將qy的單位改成qq

put 'table_name','qy','info:company','qq'

4.經過timestrap來獲取兩個版本的數據  

# 獲得company爲tencent的記錄
    get 'table_name','qy',{COLUMN=>'info:company',TIMESTRAP=>1321586238965}
    # 獲得company爲qq的數據
    get 'table_name','qy',{COLUMN=>'info:company',TIMESTRAP=>1321586271843}

5.全表掃描

 



 

scanner規範:
TIMERANGE,
FILTER,
LIMIT,
STARTROW(start row),
STOPROW(stop row),
ROWPREFIXFILTER(row prefix filter,行前綴)
TIMESTAMP,
MAXLENGTH,
or COLUMNS,
CACHE,
or RAW,
VERSIONS

   

scan 'hbase:meta'
    scan 'hbase:meta',{COLUMNS => 'info:regioninfo'}
    scan 'ns1:t1',{COLUMNS=>['c1','c2'],LIMIT=>10,STARTROW=>'xyz'}
    scan 't1',{COLUMNS=>'c1',TIMERANGE=>[1303668804,1303668904]}
    scan 't1',{REVERSED=>true}
    scan 't1',{
        ROWPREFIXFILTER=>'row2',
        FILTER=>"(QualifierFilter(>=,'binary:xyz'))
        AND (TimestampsFilter(123,456))"}
    scan 't1',{FILTER => org.apache.hadoop.hbase.filter.ColumnPaginationFilter.new(1,0)}
    scan 't1',{CONSISTENCY=>'TIMELINE'}
    設置操做屬性:
    scan 't1',{COLUMNS => ['c1','c2'],ATTRIBUTES=>{'mykey'=>'myvalue'}}
    scan 't1',{COLUMNS=>['c1','c2'],AUTHORIZATIONS=>['PRIVATE','SECRET']}
    有個額外的選項:CACHE_BLOCKS,默認爲true
    還有個選項:RAW,返回全部cells(包括刪除的markers和uncollected deleted cells,不能用來選擇特定的columns,默認爲default)
    如:scan 't1',{RAW=>true,VERSIONS=>10}

全表掃描通常不會用,數據量大的時候會死人的。。
6.刪除記錄

# 刪除id爲temp的記錄的'info:age'字段
    delete 'member','temp','info:age'
     
    # 刪除整行
    deleteall 'member','temp'

7.查詢表中有多少行

count 'table_name',INTERVAL=>1000,CACHE => 1000
    or
    有對錶t1的引用t
    t.count
    INTERVAL: 每隔多少行顯示一次count,默認是1000
    CACHE:每次去取的緩存區大小,默認是10,調整該參數可提升查詢速度

8.清空表

truncate 'table_name'
    HBase是先將表disable,再drop the table,最後creating table。

5、scan查詢
1.限制條件   

scan 'qy',{COLUMNS=>'name'}

scan 'qy',{COLUMNS=>'name:gender'}

scan 'qy',{COLUMNS=>['name','foo']}

2.限制查找條數:

scan 'qy',{COLUMNS=>['name','foo'],LIMIT=>1}
    scan 'qy',{COLUMNS=>['name','foo'],LIMIT=>2}

3.限制時間範圍: 

scan 'qy',{TIMERANGE=>[1448045892646,1448045892647]}


4.filter 過濾部分
4.1 PrefixFilter:rowKey前綴過濾  

scan 'qy',{FILTER=>"PrefixFilter('001')"}

scan 'qy',{FILTER=>PrefixFilter('t')}


4.2 QualifierFilter:列過濾器

QualifierFilter對列的名稱進行過濾,而不是列的值。  

scan 'qy',{FILTER=>"PrefixFilter('t') AND QualifierFilter(>=,'binary:b')"}


4.3 TimestampsFilter:時間戳過濾器

scan 'qy',{FILTER=>"TimestampsFilter(1448069941270,1548069941230)"}

scan 'qy',{FILTER=>"(QualifierFilter(>=,'binary:b')) AND (TimestampsFilter(1348069941270,1548069941270))" }


4.4 ColumnPaginationFilter

scan 'qy',{FILTER=>org.apache.hbase.filter.ColumnPaginationFilter.new(2,0)}

cannot load Java class org.apache.hbase.filter.ColumnPaginationFilter

hbase shell應用filter
1.導入須要的類

import org.apache.hadoop.hbase.filter.CompareFilter
    import org.apache.hadoop.hbase.filter.SingleColumnValueFilter
    import org.apache.hadoop.hbase.filter.SubstringComparator
    import org.apache.hadoop.hbase.util.Bytes

2.執行命令

scan 'tablename',STARTROW=>'start',COLUMNS=>['family:qualifier'],FILTER=>SingleColumnValueFilter.new(Bytes.toBytes('family')
相關文章
相關標籤/搜索