溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點(diǎn)擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

Hive與HBase的整合過程中的基本命令操作是怎樣的

發(fā)布時(shí)間:2021-11-11 17:16:07 來源:億速云 閱讀:188 作者:柒染 欄目:云計(jì)算

Hive與HBase的整合過程中的基本命令操作是怎樣的,很多新手對此不是很清楚,為了幫助大家解決這個(gè)難題,下面小編將為大家詳細(xì)講解,有這方面需求的人可以來學(xué)習(xí)下,希望你能有所收獲。

一:Hive與Hbase的整合過程。

1.創(chuàng)建HBase識別的表,然后查看表是否創(chuàng)建成功。

hive:

hive> CREATE TABLE hivehbase(key int, value string)
    > STORED BY 'org.apache.hadoop.hive.hbase.HBaseStorageHandler' 
    > WITH SERDEPROPERTIES ("hbase.columns.mapping" = ":key,columnfamily1:val")
    > TBLPROPERTIES ("hbase.table.name" = "hbasehive");

hive> CREATE TABLE hivehbase(key int, value string)
    > STORED BY 'org.apache.hadoop.hive.hbase.HBaseStorageHandler' 
    > WITH SERDEPROPERTIES ("hbase.columns.mapping" = ":key,columnfamily1:val")
    > TBLPROPERTIES ("hbase.table.name" = "hbasehive");
OK
Time taken: 9.881 seconds
hive> show tables;
OK
hivehbase
testhive
Time taken: 0.055 seconds, Fetched: 2 row(s)

hbase:

hbase(main):002:0> list
TABLE  
hbasehive

注意:     hbase.table.name 定義在hbase的table名稱 
                hbase.columns.mapping 定義在hbase的列族 

2.使用sql往hivehbase中導(dǎo)入數(shù)據(jù),將testhive表中的以下數(shù)據(jù)導(dǎo)入到hivehbase中,如下:

hive> select * from testhive;
OK
1	Berg
1	Berg
2	Cccc
3	Xxxx
4	Jjjj

 開始導(dǎo)入數(shù)據(jù),即: 注意overwrite,相同的數(shù)據(jù)記錄會(huì)覆蓋點(diǎn),復(fù)制。

hive>  insert overwrite table hivehbase select * from testhive;

導(dǎo)入數(shù)據(jù)成功后,在查詢該表中數(shù)據(jù),即:

hive> select * from hivehbase;
OK
1	Berg
2	Cccc
3	Xxxx
4	Jjjj
Time taken: 0.458 seconds, Fetched: 4 row(s)

然后進(jìn)入hbase,查看hbase中hbasehive表中是否存在數(shù)據(jù):

hbase(main):004:0> scan 'hbasehive'
ROW                       COLUMN+CELL                                                             
 1                        column=columnfamily1:val, timestamp=1464514508295, value=Berg           
 2                        column=columnfamily1:val, timestamp=1464514508295, value=Cccc           
 3                        column=columnfamily1:val, timestamp=1464514508295, value=Xxxx           
 4                        column=columnfamily1:val, timestamp=1464514508295, value=Jjjj           
4 row(s) in 0.0470 seconds

可以看到,在hive中往hivehbase中添加的數(shù)據(jù),已經(jīng)存在在hbase中的hbasehive表中了,
那反過來,在hbase中往hbasehive中添加的數(shù)據(jù),在hive中的hivehbase能否查看到了?

往hbase中的hbasehive中添加一條數(shù)據(jù)記錄,如下:

hbase(main):007:0> put 'hbasehive', '5','columnfamily1:val','Yyyy'

然后在在hive中查看hivehbase中的表數(shù)據(jù),可以看到:

hive> select * from hivehbase;
OK
1    Berg
2    Cccc
3    Xxxx
4    Jjjj
5    Yyyy   : 已經(jīng)說明,在hbase中操作數(shù)據(jù),也能夠在hive中查詢到。

3.hive訪問已經(jīng)存在的hbase,使用CREATE EXTERNAL TABLE,

 在hbase中準(zhǔn)備一張 student表,并為其表中插入三條數(shù)據(jù)記錄,即:

hbase(main):026:0> create 'student','info'


hbase(main):028:0> put 'student','1','info:name','Berg'

hbase(main):029:0> put 'student','2','info:name','Hbase'

hbase(main):030:0> put 'student','3','info:name','hive'
 

使用CREATE EXTERNAL TABLE:

    CREATE EXTERNAL TABLE hbase_person(key string, value string,value string,value int)       STORED BY 'org.apache.hadoop.hive.hbase.HBaseStorageHandler'  
    WITH SERDEPROPERTIES ("hbase.columns.mapping" = "info:name,info:sex,info:age")   
    TBLPROPERTIES("hbase.table.name" = "person"); 

如下:

hive> CREATE EXTERNAL TABLE hivehbase_student(key int, value string)
    > STORED BY 'org.apache.hadoop.hive.hbase.HBaseStorageHandler'
    > WITH SERDEPROPERTIES ("hbase.columns.mapping" = "info:name")
    > TBLPROPERTIES("hbase.table.name" = "student");
OK


查看表是否生成:
hive> show tables;
OK
hivehbase_student   : 表示已經(jīng)生成存在。


然后在查看hive中 這張表的數(shù)據(jù): 
hive> select * from hivehbase_student;
OK
1    Berg
2    Hbase
3    hive   

結(jié)果表名,該數(shù)據(jù)跟hbase中student表中的數(shù)據(jù)一致。

 

****************************************************************************************************

完成上述操作后,在接著往下看:

二:多列和多列族(Multiple Columns and Families) 

1.在hive中操作數(shù)據(jù)庫,如下:

先準(zhǔn)備一張?jiān)獢?shù)據(jù)表,multiplehive,往該表中存放多條數(shù)據(jù)記錄,操作如下:

hive> create table multiplehive
    > (id int, name string,sex string, age int)
    > ROW FORMAT DELIMITED FIELDS TERMINATED BY '\t' STORED AS TEXTFILE;
OK
Time taken: 0.179 seconds
hive> load data local inpath '/home/hadoop/mytestdata/multiplehive.txt' into table multiplehive;
Loading data to table default.multiplehive
OK
Time taken: 0.736 seconds
hive> select * from multiplehive;
OK
1	Berg	f	21
2	BigData	m	20
Time taken: 0.186 seconds, Fetched: 2 row(s)

CREATE TABLE hivehbase_person(key int, name string, sex string, age int) 
STORED BY 'org.apache.hadoop.hive.hbase.HBaseStorageHandler'
WITH SERDEPROPERTIES ("hbase.columns.mapping" = ":key,info:name,info:sex,info:age")
TBLPROPERTIES("hbase.table.name" = "hbasehive_person");

hive> CREATE TABLE hivehbase_person(key int, name string, sex string, age int) 
    > STORED BY 'org.apache.hadoop.hive.hbase.HBaseStorageHandler'
    > WITH SERDEPROPERTIES ("hbase.columns.mapping" = ":key,info:name,info:sex,info:age")
    > TBLPROPERTIES("hbase.table.name" = "hbasehive_person");
OK

創(chuàng)建關(guān)聯(lián)表成功后,在hive中往表 hivehbase _person表中插入準(zhǔn)備好的數(shù)據(jù),即:

hive> insert overwrite table hivehbase_person select id,name,sex,age from multiplehive;
 

然后在查看這張表的數(shù)據(jù),如下:

hive> select * from hivehbase_person;
OK
1	Berg	f	21
2	BigData	m	20
Time taken: 0.679 seconds, Fetched: 2 row(s)

再去Hbase中,查看這張表的數(shù)據(jù):hbase(main):039:0> scan 'hbasehive_person'

hbase(main):039:0> scan 'hbasehive_person'
ROW                       COLUMN+CELL                                                             
 1                        column=info:age, timestamp=1464522188307, value=21                      
 1                        column=info:name, timestamp=1464522188307, value=Berg                   
 1                        column=info:sex, timestamp=1464522188307, value=f                       
 2                        column=info:age, timestamp=1464522188307, value=20                      
 2                        column=info:name, timestamp=1464522188307, value=BigData                
 2                        column=info:sex, timestamp=1464522188307, value=m                       
2 row(s) in 8.1630 seconds

看完上述內(nèi)容是否對您有幫助呢?如果還想對相關(guān)知識有進(jìn)一步的了解或閱讀更多相關(guān)文章,請關(guān)注億速云行業(yè)資訊頻道,感謝您對億速云的支持。

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI