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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

hbase建表,删表,修改,查询(get,scan,布隆过滤器)

發布時間:2024/2/28 编程问答 43 豆豆
生活随笔 收集整理的這篇文章主要介紹了 hbase建表,删表,修改,查询(get,scan,布隆过滤器) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

建表

直接建表:

create ‘表名’,‘列族名'

如果之后想加入新的列族:

alter ‘表名’,‘列族名’

補充:

alter ‘表名’,{NAME=‘列族名’,屬性1=>屬性值 1,屬性2=>屬性值2}{NAME=>‘列族名2’ ,屬性 1=>屬性值1.....}

如果是不存在的列族,就是添加,如果是已存在的列族,就是修改屬性.(eg:version,bloofilter,ttl…)
其中Alter 允許的列族級別屬性 BLOOMFILTER, COMPRESSION ,TTL, BLOCKSIZE, BLOCKCACH …

如果建表時想加入一些設置:

create ‘表名’,{NAME=>‘列族名’,VERSIONS=>‘’,BLOCKCACHE=>‘’, BLOOMFILTER=>‘’,COMPRESSION=>‘’,TTL=>‘’},{NAME=>’列族名’, 屬性=>屬性值........}

bloomfilter是設置布隆過濾器(一般是none,可以設置為row,rowcol),compression是設置數據壓縮方式,TTL是設置數據過期時間
查看表的屬性:

describe '表名‘

刪除表:

Disable '表名‘ drop ‘表名‘

刪除列族:

alter‘表名’,delete=>’列族名’

判斷表是否存在:

exists '表名‘

為某列族的某列數據拼接后綴數據:

Append ‘表名’,‘行鍵’,‘列名’,‘拼接值’

刪除某個列族的某個字段數據:

delete ‘表名’,‘行鍵’,‘列族:列’

插入數據put使用

put只能每次插入一個行鍵對應的一個列族的一個列屬性的值,不能直接插入多條數據,區別mysql的一條語句查詢。
eg:

put 'student','001','grade:Database',92 put 'student','001','grade:Math',98 put 'student','003','doom:phone',1110989009

hbase中查看所有存在的表,使用list進行查詢

hbase所有屬性:columns,startrow,endrow,timerange,versions,fliter,limit

get

get是直接使用的行鍵進行查詢是索引查找,速度最快
無論是get還是scan都使用[ ]來查詢多個列族字段的數據或者查詢時間戳范圍數據,如columns=>[‘info:name’,‘info:sno’,‘grade:Database’],如果只是一個列族的單字段數據可以不使用[ ]
eg:
versions=>3表示取過去3個版本的數據,但是前提是需要先設置當前字段有三個版本

get 'student','001',{COLUMNS=>['info:name','info:sno'],TIMERANGE=>[1639034014464,1639034055161],VERSIONS=>3}

scan

scan是基于范圍查找,另外Scan命令若不指定顯示的版本數,則顯示擁有最大(最 新)時間戳的數據版本。
直接查看表中的前10行數據:

scan 'student'{LIMIT=>10}

更廣用法:
eg:

scan 'student',{COLUMNS=>['info:name' ,'info:dept' ], STARTROW=>'002',STOPROW=>'005',TIMERANGE=>[1639034014464,1639034055161],VERSIONS=>3}

如果想要顯示所有版本數據就必須加上versions

布隆過濾器

查找形式多樣,支持多種形式的查找
RowFilter
行鍵過濾器
查詢student表中rowkey中包含123的數據。

scan 'student', {FILTER=> "RowFilter(=,'substring:123')"}

ValueFilter
值過濾器
查詢student表中值包含123的數據,因為hbase在存儲的時候是以key-value格式的列式存儲,在查詢遍歷的時候每行每列都會遍歷,所以才有這個過濾器.
除了可以查詢等于,也可以查詢大于、大于等于、小于、小于等于、不等于,比較的方式是字典排序。
除非在數據存儲的時候存儲的類型為數字類型。
substring:包含的意思、binary:精確查詢、regexstring:正則匹配、null:空值比較、long:數字比較

scan 'student',{FILTER=> "ValueFilter(=,'substring:123')"}

SingleColumnValueFilter
單列值過濾器
查詢student表中列簇為info.列名為server的所有數據。
注意:在使用單列值過濾器必須保證每行數據都有要查詢的列,因為查詢結果也會返回沒有要查詢的列的整行記錄。

scan 'student',{FILTER=>"SingleColumnValueFilter('info','server',=,'binary:chds-2:60020')"}

PrefixFilter
行鍵前綴過濾器
查詢student表中行鍵以123開頭的所有數據

scan 'student',{FILTER=>"PrefixFilter('123')"}

ColumnPrefixFilter
單列名前綴過濾器
查詢student表中以server開頭的列的所有數據

scan 'student',{FILTER=>"ColumnPrefixFilter('server')"}

MultipleColumnPrefixFilter
多列名前綴過濾器
查詢student表中以server和regioninfo開頭的列的所有數據

scan 'student',{FILTER=>"MultipleColumnPrefixFilter('servedr','regioninfo')"}

PageFilter
分頁過濾器
分頁過濾器要和startRow搭配使用,和LIMIT功能類似。
過濾器搭配使用的時候分頁過濾器要放在最后。
但是如果是頁面開發使用java api操作,分頁過濾器有一個缺點就是必須一頁一頁翻頁,因為要傳遞startRow的值,和ES的深度分頁類似

scan 'student',{FILTER=>"PageFilter(2)",STARTROW=>''} scan 'student',{LIMIT=>2,STARTROW=>''}

InclusiveStopFilter
包含結尾過濾器
endRow在使用過程中查詢結果不包括endRow,可以搭配使用這個過濾器。

scan 'student',{STARTROW=>'',ENDROW=>'',FILTER=>"InclusiveStopFilter('')"}

FamilyFilter
列簇過濾器

scan 'student',{FILTER=>"FamilyFilter(=,'binary:info')"}

QualifierFilter
列名過濾器

scan 'student',{FILTER=>"QualifierFilter(=,'binary:server')"}

SingleColumnValueExcludeFilter
單列值不包含過濾器,和單列值過濾器類似

scan 'student',{FILTER=>"SingleColumnValueExcludeFilter('info','server',=,'binary:13270') 超強干貨來襲 云風專訪:近40年碼齡,通宵達旦的技術人生

總結

以上是生活随笔為你收集整理的hbase建表,删表,修改,查询(get,scan,布隆过滤器)的全部內容,希望文章能夠幫你解決所遇到的問題。

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