天天看點

HBase指令操作大全一、基本操作二、庫的操作三、表的操作四、查詢資料

HBase Shell操作整理

  • 一、基本操作
  • 二、庫的操作
  • 三、表的操作
  • 四、查詢資料

一、基本操作

  • 進入HBase用戶端:hbase shell
  • 檢視幫助指令:help
  • 檢視目前資料庫中有哪些表:list
  • 檢視目前使用者:whoami

二、庫的操作

hbase裡的資料庫叫namespace,一個namespace下面有多個表

  • 檢視命名空間:list_namespace
  • 建立命名空間:create_namespace ‘kb10’
  • 删除命名空間:drop_namespace ‘kb10’

三、表的操作

  • 表操作冒号是引用符
  • 列出目前命名空間的所有表:list_namespace_tables ‘kb10’#
  • 列出所有表:list
  • 檢視表的資訊:status desc ‘NAMESPACE:TABLE’
  • 啟用或禁用列簇:enable/disable ‘NAMESPACE:TABLE’
  • 檢視列簇的狀态:is_disable/is_enable ‘NAMESPACE:TABLE’
  • 建立列簇:create ‘kb10:student’,‘basicinfo’,‘stuinfo’#建立一張表,列簇為basicinfo和stuinfo

    建立完之後,可在HDFS裡hbase/data下檢視表檔案目錄

    HBase指令操作大全一、基本操作二、庫的操作三、表的操作四、查詢資料
  • 删除表,删除前要把表裡的列簇禁用掉:drop ‘NAMESPACE:TABLE’
  • 添加資料:put ‘NAMESPACE:TABLE’,‘rowkey值’,‘列簇名:列名’,‘值’
    HBase指令操作大全一、基本操作二、庫的操作三、表的操作四、查詢資料
  • 把資料寫入磁盤:flush ‘NAMESPACE:TABLE’ 。在put資料後,可以看到HDFS系統裡并沒有添加任何資料,可以說明寫入的過程是寫在記憶體裡的,而在flush之後,HDFS裡便有了資料。
    HBase指令操作大全一、基本操作二、庫的操作三、表的操作四、查詢資料
  • 掃描全表資料:scan ‘NAMESPACE:TABLE’
    HBase指令操作大全一、基本操作二、庫的操作三、表的操作四、查詢資料
  • 掃描特定列的資料:scan ‘kb10:student’,{COLUMNS=>[‘basicinfo:name’],VERSIONS=>3}
  • 擷取指定cell的資料:get ‘NAMESPACE:TABLE’,‘FAMILY:COLUMN’
    HBase指令操作大全一、基本操作二、庫的操作三、表的操作四、查詢資料
    列簇目錄下的檔案,可以使用hdfs指令檢視内容:hbase hfile -v -p -f file_path
HBase指令操作大全一、基本操作二、庫的操作三、表的操作四、查詢資料
  • 檢視表結構:desc ‘NAMESPACE:TABLE_NAME’
    HBase指令操作大全一、基本操作二、庫的操作三、表的操作四、查詢資料
  • 更新指定字段的資料 put ‘customer’, ‘jsmith’, ‘order:numb’, ‘654321’
  • 檢視“指定行”或“指定列族:列”的資料

    get ‘customer’, ‘jsmith’

    get ‘customer’, ‘jsmith’,‘addr’

    get ‘customer’, ‘jsmith’,‘addr:city’

  • 統計表資料行數 count ‘customer’
  • 清空表資料 truncate ‘customer’
  • 删除某 rowkey 的全部資料 deleteall ‘customer’,‘jsmith’
  • 删除某 rowkey 的某一列資料: delete ‘customer’,‘njones’,‘addr:city’

四、查詢資料

  • 查詢前十條資料

    例:scan ‘book:info’,{LIMIT=>10}

  • 查詢前十條c:q列的資料

    例:scan ‘book:info’,{COLUMNS=>‘c:q’,LIMIT=>10}

  • 查詢rowkey從’1000’到’2000’,列族為c:q的資料

    例:scan ‘book:info’,{STARTROW=>‘1000’,ENDROW=>‘2000’,COLUMN=>‘c:q’}’’

  • PrefixFilter:rowkey 字首過濾。ps查詢rowkey字首為100的資料

    例:scan ‘book:info’,{FILTER=>“PrifixFilter(‘100’)”}

  • 查詢rowkey中包括0778的資料

    例:scan ‘book:info’,{FILTER=>“RowFilter(=,‘substring:0778’)”,LIMIT=>10}

  • QualifierFilter(CompareFilter.Compare op, ByteArrayComparable qualifierComparator)

    QualifierFilter按照列的名稱過濾。

    例:scan ‘book:info’,{FILTER=>“PrefixFilter(‘100’) AND QualifierFilter(=,‘regexstring:q’)”}

  • ColumnPrefixFilter(byte[] prefix) 注意:一個列名是可以出現在多個列族中,該過濾器将傳回所有列族中比對的列

    ===(與上一句的查詢結果一樣)

    例:scan ‘book:info’,{FILTER=>“PrefixFilter(‘100’) AND ColumnPrefixFilter(‘q’)”}

  • MultipleColumnPrefixFilter 基于多個列名字首過濾資料

    例:scan ‘book:info’,{FILTER=>“MultipleColumnPrefixFilter(‘q1’,‘q2’,‘q3’)”,LIMIT=>10}

  • ColumnRangeFilter(byte[] minColumn,boolean minColumnclusive,byte[] maxColumn,boolean maxColumnInclusive)

    minColumn -列範圍的最小值,如果為空,則沒有下限

    minColumnInclusive -列範圍是否包含minColumn

    maxColumn -列範圍的最大值,如果為空,則沒有上限

    maxColumnInclusive -列範圍是否包含maxColumn

    例:scan ‘book:info’ {FILTER=>“ColumnRangeFilter(‘q’,true,‘q4’,false)”,LIMIT=>10}

  • SingleColumnValueFilter(byte[] family,byte[] qualifier, CompareFilter.CompareOp, compareOp, ByteArrayComparable comparator) 比較列的關鍵字查詢

    例:scan ‘book:info’,{FILTER=>“SingleColumnValueFilter(‘c’,‘q1’,=,‘substring:1’)”,LIMIT=>10}

  • FirstKeyOnlyFilter()函數每一行的第一個cell的值,可以用于高效的執行統計行數,但具體作用總覺得不大。

    例:scan ‘book:info’,{FILTER=>“FirstKeyOnlyFilter()”,LIMIT=>10}