導航:首頁 > 程序命令 > hbase創建表命令

hbase創建表命令

發布時間:2023-01-02 02:13:13

Ⅰ hbase基礎語法

名稱
命令表達式
創建表
create '表名', '列族名1','列族名2','列族名N'
查看所有表
list
描述表
describe 『表名』
判斷表存在
exists '表名'
判斷是否禁用啟用表
is_enabled '表名'
is_disabled 『表名』
添加記錄
put 『表名』, 『rowKey』, 『列族 : 列『 , '值'
查看記錄rowkey下的所有數據
get '表名' , 'rowKey'
查看錶中的記錄總數
count '表名'
獲取某個列族
get '表名','rowkey','列族'
獲取某個列族的某個列
get '表名','rowkey','列族:列』
刪除記錄
delete 『表名』 ,『行名』 , 『列族:列'
刪除整行
deleteall '表名','rowkey'
刪除一張表
先要屏蔽該表,才能對該表進行刪除
第一步 disable 『表名』 ,第二步 drop '表名'
清空表
truncate '表名'
查看所有記錄
scan "表名"
查看某個表某個列中所有數據
scan "表名" , {COLUMNS=>'列族名:列名'}
更新記錄
就是重寫一遍,進行覆蓋,hbase沒有修改,都是追加

Ⅱ Phoenix實戰

Phoenix是HBase的開源SQL皮膚。可以使用標准JDBC API代替HBase客戶端API來創建表,插入數據和查詢HBase數據。

1) 容易集成:如Spark,Hive,Pig,Flume和Map Rece。

2) 性能好:直接使用HBase API以及協處理器和自定義過濾器,可以為小型查詢提供毫秒級的 性能 ,或者為數千萬行提供數秒的性能。

3) 操作簡單:DML命令以及通過DDL命令創建表和版本化增量更改。

4) 安全功能: 支持GRANT和REVOKE 。

5) 完美支持Hbase二級索引創建。

解壓到/opt/mole 改名為phoenix

  [root@hadoop101 mole]$ tar -zxvf  /opt/software/apache-phoenix-4.14.1-HBase-1.3-bin.tar.gz -C /opt/mole      [root@hadoop101  mole]$ mv apache-phoenix-4.14.1-HBase-1.3-bin phoenix 

在phoenix目錄下

  [root@hadoop101 mole]$ cd /opt/mole/phoenix/ 

向每個節點發送server jar

  [root@hadoop101 phoenix]$ cp  phoenix-4.14.1-HBase-1.3-server.jar /opt/mole/hbase-1.3.1/lib/  [root@hadoop101 phoenix]$ scp  phoenix-4.14.1-HBase-1.3-server.jar hadoop102:/opt/mole/hbase-1.3.1/lib/  [root@hadoop101 phoenix]$ scp  phoenix-4.14.1-HBase-1.3-server.jar hadoop103:/opt/mole/hbase-1.3.1/lib/   

向每個節點發送client jar

  [root@hadoop101 phoenix]$ cp phoenix-4.14.1-HBase-1.3-client.jar  /opt/mole/hbase-1.3.1/lib/  [root@hadoop101 phoenix]$ scp  phoenix-4.14.1-HBase-1.3-client.jar hadoop102:/opt/mole/hbase-1.3.1/lib/  [root@hadoop101 phoenix]$ scp  phoenix-4.14.1-HBase-1.3-client.jar hadoop103:/opt/mole/hbase-1.3.1/lib/ 

  #phoenix      export  PHOENIX_HOME=/opt/mole/phoenix      export  PHOENIX_CLASSPATH=$PHOENIX_HOME      export PATH=$PATH:$PHOENIX_HOME/bin 

  [root@hadoop101 phoenix]$ /opt/mole/phoenix/bin/sqlline.py  hadoop101,hadoop102,hadoop103:2181 

  !table  或 !tables 

  CREATE TABLE IF NOT EXISTS us_population  (  State  CHAR(2) NOT NULL,  City  VARCHAR NOT NULL,  Population  BIGINT  CONSTRAINT  my_pk PRIMARY KEY (state, city)); 

如下顯示:

在phoenix中,默認情況下,表名等會自動轉換為大寫,若要小寫,使用雙引號,如"us_population"。

  upsert into us_population  values('NY','NewYork',8143197); 

  select * from us_population ;    select  * from us_population wherestate='NY'; 

  delete from us_population wherestate='NY'; 

  drop table us_population; 

  !quit 

默認情況下,直接在hbase中創建的表,通過phoenix是查看不到的。如圖1和圖2,US_POPULATION是在phoenix中直接創建的,而kylin相關表是在hbase中直接創建的,在phoenix中是查看不到kylin等表的。

圖1 phoenix命令行中查看所有表:

圖2 hbase命令行中查看所有表:

如果要在phoenix中操作直接在hbase中創建的表,則需要在phoenix中進行表的映射。映射方式有兩種: 視圖映射和表映射

Hbase 中test的表結構如下,兩個列簇name、company.

Rowkeynamecompany



啟動Hbase shell

  [root@hadoop101 ~]$ /opt/mole/hbase-1.3.1/bin/hbase  shell 

創建Hbase表test

  hbase(main):001:0>  create 'test','name','company' 

創建表,如下圖:

Phoenix創建的視圖是只讀的,所以只能用來做查詢,無法通過視圖對源數據進行修改等操作。

在phoenix中創建視圖test表

  0:  jdbc:phoenix:hadoop101,hadoop102,hadoop103> create view "test"(empid varchar primary  key,"name"."firstname"  varchar,"name"."lastname"  varchar,"company"."name"  varchar,"company"."address" varchar); 

刪除視圖

  0:  jdbc:phoenix:hadoop101,hadoop102,hadoop103> drop view "test"; 

使用Apache Phoenix創建對HBase的表映射,有兩種方法:

1) 當HBase中已經存在表時,可以以類似創建視圖的方式創建關聯表,只需要將create view改為create table即可。

  0:  jdbc:phoenix:hadoop101,hadoop102,hadoop103> create table  "test"(empid varchar primary  key,"name"."firstname"  varchar,"name"."lastname"  varchar,"company"."name" varchar,"company"."address"  varchar); 

2) 當HBase中不存在表時,可以直接使用create table指令創建需要的表,系統將會自動在Phoenix和HBase中創建person_infomation的表,並會根據指令內的參數對表結構進行初始化。

  0:  jdbc:phoenix:hadoop101,hadoop102,hadoop103> create table  "test"(empid varchar primary  key,"name"."firstname"  varchar,"name"."lastname" varchar,"company"."name"  varchar,"company"."address" varchar); 

在Phoenix中查看數據

  select * from STOCK_SYMBOL 

如下顯示:

在Hbase中查看數據

  scan "STOCK_SYMBOL" 

更多使用詳情,請參考 http://phoenix.apache.org/phoenix_spark.html

相比於直接創建映射表,視圖的查詢效率會低,原因是:創建映射表的時候,Phoenix會在表中創建一些空的鍵值對,這些空鍵值對的存在可以用來提高查詢效率。

使用create table創建的關聯表,如果對表進行了修改,源數據也會改變,同時如果關聯表被刪除,源表也會被刪除。但是視圖就不會,如果刪除視圖,源數據不會發生改變。

Ⅲ HBase存儲架構

上圖是HBase的存儲架構圖。

由上圖可以知道,客戶端是通過Zookeeper找到HMaster,然後再與具體的Hregionserver進行溝通讀寫數據的。

具體到物理實現,細節包括以下這些:

首先要清楚HBase在hdfs中的存儲路徑,以及各個目錄的作用。在hbase-site.xml 文件中,配置項 <name> hbase.rootdir</name> 默認 「/hbase」,就是hbase在hdfs中的存儲根路徑。以下是hbase0.96版本的個路徑作用。1.0以後的版本請參考這里: https://blog.bcmeng.com/post/hbase-hdfs.html

1、 /hbase/.archive
HBase 在做 Split或者 compact 操作完成之後,會將 HFile 移到.archive 目錄中,然後將之前的 hfile 刪除掉,該目錄由 HMaster 上的一個定時任務定期去清理。

2、 /hbase/.corrupt
存儲HBase損壞的日誌文件,一般都是為空的。

3、 /hbase/.hbck
HBase 運維過程中偶爾會遇到元數據不一致的情況,這時候會用到提供的 hbck 工具去修復,修復過程中會使用該目錄作為臨時過度緩沖。

4、 /hbase/logs
HBase 是支持 WAL(Write Ahead Log) 的,HBase 會在第一次啟動之初會給每一台 RegionServer 在.log 下創建一個目錄,若客戶端如果開啟WAL 模式,會先將數據寫入一份到.log 下,當 RegionServer crash 或者目錄達到一定大小,會開啟 replay 模式,類似 MySQL 的 binlog。

5、 /hbase/oldlogs
當.logs 文件夾中的 HLog 沒用之後會 move 到.oldlogs 中,HMaster 會定期去清理。

6、 /hbase/.snapshot
hbase若開啟了 snapshot 功能之後,對某一個用戶表建立一個 snapshot 之後,snapshot 都存儲在該目錄下,如對表test 做了一個 名為sp_test 的snapshot,就會在/hbase/.snapshot/目錄下創建一個sp_test 文件夾,snapshot 之後的所有寫入都是記錄在這個 snapshot 之上。

7、 /hbase/.tmp
當對表做創建或者刪除操作的時候,會將表move 到該 tmp 目錄下,然後再去做處理操作。

8、 /hbase/hbase.id
它是一個文件,存儲集群唯一的 cluster id 號,是一個 uuid。

9、 /hbase/hbase.version
同樣也是一個文件,存儲集群的版本號,貌似是加密的,看不到,只能通過web-ui 才能正確顯示出來

10、 -ROOT-
該表是一張的HBase表,只是它存儲的是.META.表的信息。通過HFile文件的解析腳本 hbase org.apache.hadoop.hbase.io.hfile.HFile -e -p -f 可以查看其存儲的內容,如下所示:

以上可以看出,-ROOT-表記錄的.META.表的所在機器是dchbase2,與web界面看到的一致:

11、 .META.
通過以上表能找到.META.表的信息,該表也是一張hbase表,通過以上命令,解析其中一個region:

以上可以看出,adt_app_channel表的數據記錄在dchbase3這台reginserver上,也與界面一致,如果有多個region,則會在表名後面加上rowkey的范圍:

通過以上描述,只要找到-ROOT-表的信息,就能根據rowkey找到對應的數據,那-ROOT-在哪裡找呢?從本文一開始的圖中可以知道,就是在zookeeper中找的。進入zookeeper命令行界面:

可以看出-ROOT-表存儲在 dchbase3 機器中,對應界面如下:

以上就是HBase客戶端根據指定的rowkey從zookeeper開始找到對應的數據的過程。

那在Region下HBase是如何存儲數據的呢?

以下就具體操作一張表,查詢對應的HFile文件,看HBase的數據存儲過程。

在HBase創建一張表 test7,並插入一些數據,如下命令:

查看wal日誌,通過 hbase org.apache.hadoop.hbase.regionserver.wal.HLog --mp -p 命令可以解析HLog文件,內容如下:

查看HFile文件,內容如下:

由此可見,HFile文件就是存儲HBase的KV對,其中Key的各個欄位包含了的信息如下:

由於hbase把cf和column都存儲在HFile中,所以在設計的時候,這兩個欄位應該盡量短,以減少存儲空間。

但刪除一條記錄的時候,HBase會怎麼操作呢?執行以下命令:

刪除了rowkey為200的記錄,查看hdfs,原來的HFile並沒有改變,而是生成了一個新的HFile,內容如下:

所以在HBase中,刪除一條記錄並不是修改HFile裡面的內容,而是寫新的文件,待HBase做合並的時候,把這些文件合並成一個HFile,用時間比較新的文件覆蓋舊的文件。HBase這樣做的根本原因是,HDFS不支持修改文件。

Ⅳ Hbase表映射到phoenix

在phoenix中操作hbase已有數據表就需要手動進行配置

直接在安裝了hbase服務的環境中,輸入hbase shell執行命令,進入hbase下進行操作: hbase shell

進入hbase: hbase shell
創建hbase表: create 'phoenix','info'
插入數據: put 'phoenix','row001','info:name','phoenix'

進入phoenix的cli命令:到phoenix的bin目錄執行: ./sqlline.py
創建phoenix表: create view "phoenix"(rowkey varchar primary key,"info"."name" varchar);
驗證:在phoenix的cli命令下查看數據: select * from "phoenix" limit 10;
注意事項:
1.phoenix驗證的時候,查詢表名需要用雙引號括起來,強制不轉換成大寫
2.創建phoenix時,表名和列族以及列名需要用雙引號括起來,不然會自動將小寫轉換成大寫。

Ⅳ 創建Hbase表&Hbse表映射到hive表

create 'testTable',{NAME=>'data', VERSIONS =>1},{NAME=>'jsonStr', VERSIONS=>1}

創建一張hive表,實現將hbase表中的數據映射到該hive表中,而且當hbase表中的數據有更新時,該hive表中的數據也能夠動態更新
--key是hbase的rowkey, 各個欄位是hbase中的quailiter

CREATE external table hbase_table(row_key STRING, name STRING)
STORED BY 'org.apache.hadoop.hive.hbase.HBaseStorageHandler'
WITH SERDEPROPERTIES ("hbase.columns.mapping" = ":key, jsonStr:jsonStr")
TBLPROPERTIES ("hbase.table.name" = "nameTable");

Ⅵ HBase調優:預分區與行鍵設計

基於此我們可以控制在建表的時候,創建多個空region,並確定每個region的起始和終止rowkey,這樣只要我們的rowkey設計能均勻的命中各個region,就不會存在寫熱點問題。自然split的幾率也會大大降低。當然隨著數據量的不斷增長,該split的還是要進行split。像這樣預先創建hbase表分區的方式,稱之為預分區。

hash(主鍵) + 年月日時(2019062315)
這里只取hash(主鍵)的前6位,使得行鍵的長度正好是16,也就是8的整數倍,在64位計算機中,效果最好。

列族固定,只有一個,設為f,標簽為分鍾加上秒數:
分秒(5623)
如果需要精確到毫秒,可以為列族f設置有多個版本或者將標簽設計為分秒毫秒(5623142)或者分秒.版本號(5623.1)

一個regionserver可以管理的region數量和列族數量與每個列族緩存的大小有關,計算公式如下:

我這里只分了三個region,用hbase shell命令創建表,設置預分區數量為3

下圖中,可以看到,預分區以後,數據的讀寫訪問請求數量均勻分布在3台RegionServer上,避免了熱點問題。

Ⅶ Ubuntu HBASE 創建文件出錯

base 的新手,並嘗試使用以下命令在hortonworks沙箱hbase shell中創建一個表: create 'testtable', 'colfam1' 這樣做時,我不斷收到此錯誤: hbase(main):0..

Ⅷ hbase輸入出現了星號

兩個單引號 當命令行出現星號的時候使用
hbase shell
進入hbase
ctrl+backspace
退格
ddl
dml
list
help
查看所有命令
create 『probe_log』,『info』
創建表,表名+列族名,該名稱任意
describe 『probe_log』
查看錶信息 表名
create_namespace 『probe_log』
新建命名空間create
create 『probe_log:user_event_v2』,『info』
在命名空間下新建表

Ⅸ HBase創建,刪除,清空數據表

HBase shell窗口進入,執行命令hbase shell

語法:create <table>, {NAME => <family>, VERSIONS => <VERSIONS>}
例如:創建表t1,有兩個family name:f1,f2,且版本數前者為3,後者為1

disable表
drop表

Ⅹ 怎麼創建關於hbase的hive表

1. 啟動hive,並連接到hbase
./hive --auxpath /opt/apache/hive-0.12.0-bin/lib/hive_hbase-handler-
2. 創建內表
CREATE TABLE hive_123(word string, count bigint)
STORED BY 'org.apache.hadoop.hive.hbase.HBaseStorageHandler'
WITH SERDEPROPERTIES ("hbase.columns.mapping" = ":key,cf1:val")
TBLPROPERTIES ("hbase.table.name" = "hive_123");

執行這條命令後,hive將會在hbase上創建表"hive_123",hive列與hbase列的映射關系為:
word欄位為hbase表的rowkey,count欄位則為cf1:val即column family為cf1,qualifier為val

3. 創建外表
CREATE EXTERNAL TABLE hive_vv(key string, sip string, count int)
STORED BY 'org.apache.hadoop.hive.hbase.HBaseStorageHandler'
WITH SERDEPROPERTIES ("hbase.columns.mapping" = ":key,cf0:sip,cf1:count")
TBLPROPERTIES ("hbase.table.name" = "hive_vv");

創建一個hive外表,將名為hive_w的hbase表識別到hive中。

閱讀全文

與hbase創建表命令相關的資料

熱點內容
dvd光碟存儲漢子演算法 瀏覽:757
蘋果郵件無法連接伺服器地址 瀏覽:962
phpffmpeg轉碼 瀏覽:671
長沙好玩的解壓項目 瀏覽:144
專屬學情分析報告是什麼app 瀏覽:564
php工程部署 瀏覽:833
android全屏透明 瀏覽:737
阿里雲伺服器已開通怎麼辦 瀏覽:803
光遇為什麼登錄時伺服器已滿 瀏覽:302
PDF分析 瀏覽:484
h3c光纖全工半全工設置命令 瀏覽:143
公司法pdf下載 瀏覽:381
linuxmarkdown 瀏覽:350
華為手機怎麼多選文件夾 瀏覽:683
如何取消命令方塊指令 瀏覽:349
風翼app為什麼進不去了 瀏覽:778
im4java壓縮圖片 瀏覽:362
數據查詢網站源碼 瀏覽:150
伊克塞爾文檔怎麼進行加密 瀏覽:892
app轉賬是什麼 瀏覽:163