亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 服務器 > Web服務器 > 正文

shell 命令行中操作HBase數據庫實例詳解

2024-09-01 13:49:22
字體:
來源:轉載
供稿:網友

 shell 命令行中操作HBase數據庫

Shell控制

進入到shell命令行界面,執行hbase命令,并附加shell關鍵字: 

[grid@hdnode3 ~]$ hbase shell HBase Shell; enter ¨help¨ for list of supported commands. Type "exit" to leave the HBase Shell Version 0.90.5, r1212209, Fri Dec 9 05:40:36 UTC 2011  hbase(main):001:0> 

 雖然成功登錄進去了,可是我們也不知道現在能做什么,也不了解SHELL下都有哪些命令。這個時候,我們可以選擇,去看官方文檔中的說明,或者,敲個help上去看看。

  hbase(main):002:0> help .................. .................. COMMAND GROUPS:  Group name: general  Commands: status, version   Group name: ddl  Commands: alter, create, describe, disable, drop, enable, exists, is_disabled, is_enabled, list   Group name: dml  Commands: count, delete, deleteall, get, get_counter, incr, put, scan, truncate   Group name: tools  Commands: assign, balance_switch, balancer, close_region, compact, flush, major_compact, move, split, unassign, zk_dump   Group name: replication  Commands: add_peer, disable_peer, enable_peer, remove_peer, start_replication, stop_replication .................. ..................

 幫助信息果然有幫助,通過輸出的信息,我們大致了解能夠做什么。可以看到hbase中也是分有ddl/dml這類語句,此外還有與復制相關的,與管理相關的命令等等。 

先來試試通用(general)命令,查詢狀態:

 hbase(main):003:0> status 5 servers, 0 dead, 0.4000 average load

查詢版本:

  hbase(main):004:0> version 0.90.5, r1212209, Fri Dec 9 05:40:36 UTC 2011

接下來重點項,DDL和DML(想不到HBase也分了DML/DDL語句)。HBase中沒有庫的概念,做為BigTable的山寨產品,盡管沒名山寨到名字,但山寨到了精髓,從設計上來說,它也不需要分庫,甚至不需要分表,所有數據放到同一張表中也是可以的,這就是真正的BigTable嘛。 

創建表對象:

  hbase(main):005:0> create ¨t¨,¨t_id¨,¨t_vl¨ 0 row(s) in 2.3490 seconds

 HBase中創建對象的語法比較靈活,前面這個示例是簡寫法,其功能等效于完整寫法,"hbase> create ¨t¨, {NAME => ¨t_id¨}, {NAME => ¨t_vl¨}",第一個參數用于指定表名,后面跟的所有參數都是列族的名稱。每個表的列族需要在表創建時定義好(盡管后期也可以修改,但最好一開始就定義好),從這個角度來看,HBase中的對象是結構化的。

 查看表對象:

  hbase(main):006:0> list TABLE                                                                                   t                                                                                     1 row(s) in 0.0080 seconds hbase(main):018:0> describe ¨t¨ DESCRIPTION                                                 ENABLED                           {NAME => ¨t¨, FAMILIES => [{NAME => ¨t_id¨, BLOOMFILTER => ¨NONE¨, REPLICATION_SCOPE => ¨0¨, COMPRESSION => true                              ¨NONE¨, VERSIONS => ¨3¨, TTL => ¨2147483647¨, BLOCKSIZE => ¨65536¨, IN_MEMORY => ¨false¨, BLOCKCACHE => ¨t                               rue¨}, {NAME => ¨t_vl¨, BLOOMFILTER => ¨NONE¨, REPLICATION_SCOPE => ¨0¨, COMPRESSION => ¨NONE¨, VERSIONS =>                                ¨3¨, TTL => ¨2147483647¨, BLOCKSIZE => ¨65536¨, IN_MEMORY => ¨false¨, BLOCKCACHE => ¨true¨}]}                                      1 row(s) in 0.0100 seconds

 輸出的格式也是JSON串的形式,從中可以看到保留的版本數,TTL號(Time to Live,保留時間),列的定義,塊大小等等。 

修改表對象,修改(含刪除)前必須首先禁用對象,執行修改命令成功后,再啟用對象。 

禁用對象:

  hbase(main):004:0> disable ¨t¨ 0 row(s) in 2.0430 seconds

 判斷當前表對象啟用或禁用:

  hbase(main):007:0> is_enabled ¨t¨ false                                                                                   0 row(s) in 0.0040 seconds  hbase(main):008:0> is_disabled ¨t¨ true                                                                                   0 row(s) in 0.0040 seconds

 修改表對象,增加一個列族:

 hbase(main):021:0> alter ¨t¨, {NAME => ¨t_info¨, VERSIONS => 3}    0 row(s) in 0.0360 seconds  hbase(main):023:0> enable ¨t¨ 0 row(s) in 2.0250 seconds

 插入記錄: 

 hbase(main):025:0> put ¨t¨,¨10001¨,¨t_vl:name¨,¨jss¨ 0 row(s) in 0.0060 seconds  hbase(main):026:0> put ¨t¨,¨10001¨,¨t_vl:age¨,¨99¨ 0 row(s) in 0.0070 seconds  hbase(main):027:0> put ¨t¨,¨10001¨,¨t_info:general¨,¨his fullname is junsanis!¨  0 row(s) in 0.0040 seconds 

記錄獲?。?/p>

 hbase(main):028:0> get ¨t¨,¨10001¨ COLUMN                   CELL                                                             t_info:general               timestamp=1365670813664, value=his fullname is junsanis!                                   t_vl:age                  timestamp=1365670733223, value=99                                               t_vl:name                 timestamp=1365670723056, value=jss                                              3 row(s) in 0.0450 seconds 

獲取指定記錄中指定列族的數據:

 hbase(main):029:0> get ¨t¨,¨10001¨,¨t_vl¨ COLUMN                   CELL                                                             t_vl:age                  timestamp=1365670733223, value=99                                               t_vl:name                 timestamp=1365670723056, value=jss                                              2 row(s) in 0.0070 seconds

 獲取指定記錄中指定列族中指定列的數據:

  hbase(main):030:0> get ¨t¨,¨10001¨,¨t_vl:age¨ COLUMN                   CELL                                                             t_vl:age                  timestamp=1365670733223, value=99                                               1 row(s) in 0.0070 seconds

 記錄更新(跟插入沒有區別):

 hbase(main):031:0> put ¨t¨,¨10001¨,¨t_vl:age¨,¨10¨ 0 row(s) in 0.0050 seconds  hbase(main):032:0> get ¨t¨,¨10001¨,¨t_vl:age¨ COLUMN                   CELL                                                             t_vl:age                  timestamp=1365670912700, value=10                                               1 row(s) in 0.0080 seconds 

全表掃描:

 hbase(main):033:0> scan ¨t¨ ROW                     COLUMN+CELL                                                          10001                   column=t_info:general, timestamp=1365670813664, value=his fullname is junsanis!                        10001                   column=t_vl:age, timestamp=1365670912700, value=10                                      10001                   column=t_vl:name, timestamp=1365670723056, value=jss                                     1 row(s) in 0.0370 seconds

全表描述某個列:

hbase(main):036:0> scan ¨t¨, {COLUMNS => ¨t_vl¨} ROW                     COLUMN+CELL                                                          10001                   column=t_vl:age, timestamp=1365670912700, value=10                                      10001                   column=t_vl:name, timestamp=1365670723056, value=jss                                     1 row(s) in 0.0080 seconds

刪除記錄行:

  hbase(main):043:0> delete ¨t¨,¨10001¨,¨t_vl:age¨ 0 row(s) in 0.0050 seconds  hbase(main):045:0> get ¨t¨,¨10001¨ COLUMN                   CELL                                                             t_info:general               timestamp=1365670813664, value=his fullname is junsanis!                                   t_vl:name                 timestamp=1365670723056, value=jss                                              2 row(s) in 0.0070 seconds

 刪除表:

  hbase(main):047:0> disable ¨t¨ 0 row(s) in 2.0230 seconds  hbase(main):048:0> drop ¨t¨ 0 row(s) in 1.1170 seconds

 看完前面的例子,大家有沒有問題,或者想到了什么?我腦子里反正是蹦出問號了:HBase中沒有UPDATE操作,只有INSERT,可是我們每次put新記錄都替換掉了舊的版本,怎么保存大量記錄呢?難道每個row key的columns中只能存在一條記錄?這不科學!這也顯然不是人民群眾期待并且喜聞樂見的表現嘛。 

這個問題呀,其實是列值保存版本(VERSIONS)或保留時間(TTL, Time to Liv)在起作用。 

比如,我們希望統計某用戶的最近(n條)瀏覽記錄,那么,創建HBase表對象如下: 

hbase> create ¨rlog¨,¨userid¨,{NAME=>¨article¨,VERSIONS=>100} 

當前設定,保留最近的100個版本。當用戶瀏覽帖子時,就向rlog表中插入一條記錄,形式如下: 

hbase> put ¨rlog¨,$userid,¨article:id¨,$aid

這里僅選擇記錄瀏覽的用戶ID和瀏覽頁面ID,也可以根據實際情況,保存頁面的URL地址,文章標題等等信息。HBase表列族是非結構化的,大家可以根據需求任意增加列值。

那么,要獲取用戶最近瀏覽記錄,應該怎么查呢?,比如說獲取最近瀏覽的10條記錄: 

hbase> get ¨rlog¨,$userid,{COLUMN=>¨article:id¨, VERSIONS=>10}

 除了通過VERSIONS控制外,還可以考慮通過版本的保存時間TTL來控制,TTL的單位是秒,默認一般是保存30天。

感謝閱讀,希望能幫助到大家,謝謝大家對本站的支持!


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
91亚洲人电影| 国产精品白丝av嫩草影院| 国产精品第一第二| 欧美大尺度电影在线观看| 欧美老少做受xxxx高潮| 精品国产91久久久久久| 日韩精品视频在线观看网址| 亚洲成年网站在线观看| 色琪琪综合男人的天堂aⅴ视频| 国产丝袜一区二区三区| 91香蕉亚洲精品| 亚洲欧美国产制服动漫| 欧美激情免费视频| 久久久av免费| 国产精品视频区1| 欧美多人乱p欧美4p久久| 免费97视频在线精品国自产拍| 97精品视频在线观看| 亚洲一区二区三区乱码aⅴ| 欧美日韩福利视频| 欧美丰满少妇xxxxx做受| 一区二区三欧美| 欧美日韩亚洲视频| 51久久精品夜色国产麻豆| 国产欧美 在线欧美| 视频在线观看一区二区| 日本免费一区二区三区视频观看| 中文日韩在线视频| 国产精品电影网站| 日本人成精品视频在线| 夜夜嗨av一区二区三区四区| 亚洲欧美国产一本综合首页| 欧美一级免费看| 日韩欧美精品网址| 国产欧美在线看| 日韩av中文字幕在线免费观看| 两个人的视频www国产精品| 亚洲精品福利资源站| 国产精品伦子伦免费视频| 久久97精品久久久久久久不卡| 午夜剧场成人观在线视频免费观看| 麻豆国产va免费精品高清在线| 亚洲精品午夜精品| 尤物九九久久国产精品的特点| 亚洲国产精品成人精品| www.亚洲一二| 欧美精品久久久久久久久| 国产日韩av在线播放| 久久久视频精品| 日日摸夜夜添一区| 久久久久日韩精品久久久男男| 免费av一区二区| 欧美综合国产精品久久丁香| 欧美亚洲视频在线看网址| 亚洲乱码国产乱码精品精天堂| 久久av在线播放| 久久天天躁夜夜躁狠狠躁2022| 日韩小视频网址| 日韩亚洲在线观看| 亚洲一区二区三| 国产精品视频网站| 国产成人精品免高潮在线观看| 亚洲香蕉伊综合在人在线视看| 欧美在线激情视频| 精品中文字幕乱| 亚洲欧美中文字幕在线一区| 成人做爰www免费看视频网站| 俺去啦;欧美日韩| 一区二区三区www| 亚洲尤物视频网| 最近2019中文字幕mv免费看| 亚洲美女动态图120秒| 色av中文字幕一区| 91高清视频在线免费观看| 欧美日韩福利在线观看| 亚洲色图狂野欧美| 日韩av网站电影| 日本不卡免费高清视频| 欧美猛交免费看| 57pao成人永久免费视频| 2019中文字幕在线免费观看| 日韩大片在线观看视频| 亚洲日韩中文字幕| 精品久久久久久久久国产字幕| 国内久久久精品| 久久久精品国产网站| 国产亚洲人成a一在线v站| 欧美日韩另类在线| 亚洲风情亚aⅴ在线发布| 国产美女久久久| 4438全国成人免费| 91老司机精品视频| 在线播放国产一区中文字幕剧情欧美| 精品中文字幕在线观看| 久久香蕉精品香蕉| 日韩在线视频免费观看高清中文| 黑人巨大精品欧美一区免费视频| 亚洲系列中文字幕| 国产婷婷成人久久av免费高清| 日韩欧美中文字幕在线播放| 色综合久久久888| 日韩欧中文字幕| 国产在线98福利播放视频| 日韩激情第一页| 欧美中在线观看| 亚洲一区二区三区香蕉| 欧美国产欧美亚洲国产日韩mv天天看完整| 亚洲精品久久7777777| 欧美在线播放视频| 久久6精品影院| 欧美激情一区二区三区久久久| 亚洲国产精品久久久久秋霞蜜臀| 久久久久免费精品国产| 久久免费视频观看| 成人网中文字幕| 国产福利视频一区| 中文字幕在线看视频国产欧美| 欧美刺激性大交免费视频| 国产成人精品视频在线| 国产欧美韩国高清| 欧美一区二区三区图| 久久精品一偷一偷国产| 夜夜嗨av色一区二区不卡| 日韩久久午夜影院| 欧美性videos高清精品| 久久精品影视伊人网| 久久精品久久久久久国产 免费| 亚洲午夜性刺激影院| 国产日韩欧美综合| 久久久国产精品x99av| 欧美精品一本久久男人的天堂| 国产中文日韩欧美| 成人久久久久久| 在线丨暗呦小u女国产精品| 91久久夜色精品国产网站| 国产亚洲精品美女久久久| 日韩av不卡电影| 97欧美精品一区二区三区| 欧美激情图片区| 91久久嫩草影院一区二区| 91精品久久久久久久久中文字幕| 一本一本久久a久久精品综合小说| 黑人巨大精品欧美一区二区免费| 中文字幕精品网| 国产亚洲激情视频在线| 国产精品观看在线亚洲人成网| 色99之美女主播在线视频| 激情成人在线视频| 国产精品国产三级国产专播精品人| 欧美最猛性xxxxx亚洲精品| 亚洲va欧美va在线观看| 欧美成人免费在线观看| 中文字幕在线观看亚洲| 亚洲网址你懂得| 亚洲国产又黄又爽女人高潮的| 日韩av在线一区| 免费91麻豆精品国产自产在线观看| 欧洲美女7788成人免费视频| 国产精品视频网站| 欧美色videos| 国产丝袜精品第一页| 深夜成人在线观看| 日本久久久久久久久久久| 国产精品高潮视频|