日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

HBase常用命令使用

發布時間:2023/12/31 编程问答 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 HBase常用命令使用 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

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

3、過濾器查詢

?????? 引言:過濾器主要分為兩大類(比較過濾器、專用過濾器

?????? 過濾器的作用是在服務端判斷數據是否滿足條件,然后只將滿足條件的數據返回給客戶端;

?????? 條件:各種過濾規則 + 比較規則;

?????? 比較規則: == 、!=、<、>、>=、<=

?????? hbase過濾器的比較運算符:

??????????????????????????????????????????????? LESS <

??????????????????????????????????????????????? LESS_OR_EQUAL <=

??????????????????????????????????????????????? EQUAL =

??????????????????????????????????????????????? NOT_EQUAL <>

??????????????????????????????????????????????? GREATER_OR_EQUAL >=

?????? ???????????????????????????????????????? GREATER >

?????? ?????? ????????????????????????????????? NO_OP 排除所有

?????? hbase過濾器的比較器(指定比較機制):

??????????????????????????????????????????????? BinaryComparator按字節索引順序比較指定字節數組,采用Bytes.compareTo(byte[]);

??????????????????????????????????????????????? BinaryPrefixComparator跟前面相同,只是比較左端的數據是否相同;

??????????????????????????????????????????????? NullComparator判斷給定的是否為空;

??????????????????????????????????????????????? BitComparator按位比較;

??????????????????????????????????????????????? RegexStringComparator 提供一個正則的比較器,僅支持EQUAL和非EQUAL;

??????????????????????????????????????????????? SubstringComparator判斷提供的子串是否出現在value中;

??? 1、比較過濾器

??????? ? a、行健過濾器RowFilter

?????????????? Filter filter = new RowFilter (CompareOp.LESS_OR_EQUAL, new BinaryComparator(Bytes.toBytes("user000")));

??????? ? b、列簇過濾器FamilyFilter

?????????????? Filter filter = new FamilyFilter(CompareOp.LESS, new BinaryComparator(Bytes.toBytes("列簇name->cf1")));

??????? ? c、 列過濾器QualifierFilter

?????????????? Filter filter = new QualifierFilter(CompareOp.LESS_OR_EQUAL, new BinaryComparator(Bytes.toBytes("name")));

??????? ? d、 值過濾器ValueFilter

?????????????? Filter filter = new ValueFilter(CompareOp.EQUAL, new SubstringComparator("zhangsan");

?????????

?????

??????

??????

??????

?

?

??????

???????????

????

???????

?????????

?

總結

以上是生活随笔為你收集整理的HBase常用命令使用的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。