詳解hbase與hive數(shù)據(jù)同步
hive的表數(shù)據(jù)是可以同步到impala中去的。一般impala是提供實(shí)時(shí)查詢操作的,像比較耗時(shí)的入庫(kù)操作我們可以使用hive,然后再將數(shù)據(jù)同步到impala中。另外,我們也可以在hive中創(chuàng)建一張表同時(shí)映射hbase中的表,實(shí)現(xiàn)數(shù)據(jù)同步。
下面,筆者依次進(jìn)行介紹。
一、impala與hive的數(shù)據(jù)同步
首先,我們?cè)趆ive命令行執(zhí)行showdatabases;可以看到有以下幾個(gè)數(shù)據(jù)庫(kù):

然后,我們?cè)趇mpala同樣執(zhí)行showdatabases;可以看到:

目前的數(shù)據(jù)庫(kù)都是一樣的。
下面,我們?cè)趆ive里面執(zhí)行create databaseqyk_test;創(chuàng)建一個(gè)數(shù)據(jù)庫(kù),如下:

然后,我們使用qyk_test這個(gè)數(shù)據(jù)庫(kù)創(chuàng)建一張表,執(zhí)行create table user_info(idbigint, account string, name string, age int) row format delimitedfields terminated by ‘\t';如下:

此時(shí),我們已經(jīng)在hive這邊創(chuàng)建好了,然后直接在impala這邊執(zhí)行showdatabases;可以看到:

連qyk_test這個(gè)數(shù)據(jù)庫(kù)都沒(méi)有。
接下來(lái),我們?cè)趇mpala執(zhí)行INVALIDATEMETADATA;然后再查詢可以看到:

數(shù)據(jù)庫(kù)和表都會(huì)同步過(guò)來(lái)。
好了,筆者來(lái)做個(gè)總結(jié):
如果在hive里面做了新增、刪除數(shù)據(jù)庫(kù)、表或者數(shù)據(jù)等更新操作,需要執(zhí)行在impala里面執(zhí)行INVALIDATEMETADATA;命令才能將hive的數(shù)據(jù)同步impala;
如果直接在impala里面新增、刪除數(shù)據(jù)庫(kù)、表或者數(shù)據(jù),會(huì)自動(dòng)同步到hive,無(wú)需執(zhí)行任何命令。
二、hive與hbase的數(shù)據(jù)同步
首先,我們?cè)趆base中創(chuàng)建一張表create ‘user_sysc', {NAME =>‘info'},然后,我們?cè)趆ive中執(zhí)行
CREATEEXTERNALTABLEuser_sysc(keyint,valuestring)ROWFORMATSERDE 'org.apache.hadoop.hive.hbase.HBaseSerDe'
STORED BY'org.apache.hadoop.hive.hbase.HBaseStorageHandler'
WITHSERDEPROPERTIES( 'serialization.format'='\t','hbase.columns.mapping'=':key,info:value','field.delim'='\t')
TBLPROPERTIES ('hbase.table.name'='user_sysc')
創(chuàng)建一張外部表指向hbase中的表,然后,我們?cè)趆ive執(zhí)行insert into tableuser_sysc select id,name fromuser_info;入一步份數(shù)據(jù)到user_sysc可以看到:

然后,我們?cè)趆base里面執(zhí)行scan‘user_sysc'可以看到:

接下來(lái),我們?cè)趆base里面執(zhí)行deleteall ‘user_sysc',‘11'刪掉一條數(shù)據(jù),如下:

然后,我在hive里面查詢看看,如下:

說(shuō)明自動(dòng)同步過(guò)來(lái)了。因此,只要?jiǎng)?chuàng)建hive表時(shí),與hbase中的表做了映射,表名和字段名可以不一致,之后無(wú)論在hbase中新增刪除數(shù)據(jù)還是在hive中,都會(huì)自動(dòng)同步。
如果在hive里面是創(chuàng)建的外部表需要在hbase中先創(chuàng)建,內(nèi)部表則會(huì)在hbase中自動(dòng)創(chuàng)建指定的表名。
因?yàn)閔ive不支持刪除等操作,而hbase里面比較方便,所以我們可以采用這種方式。
相關(guān)文章
SpringBoot整合TKMyBatis實(shí)現(xiàn)單表增刪改查操作
據(jù)說(shuō)tk.mybatis能夠讓我不寫(xiě)sql代碼就可以所有單表操作問(wèn)題,作為熱愛(ài)偷懶的我,怎么能放過(guò)這種機(jī)會(huì)。talk is cheap, show me the code。趕緊搞個(gè)例子爽一把先2023-01-01
基于Java編寫(xiě)第一個(gè)區(qū)塊鏈項(xiàng)目
區(qū)塊鏈?zhǔn)欠植际綌?shù)據(jù)存儲(chǔ)、點(diǎn)對(duì)點(diǎn)傳輸、共識(shí)機(jī)制、加密算法等計(jì)算機(jī)技術(shù)的新型應(yīng)用模式,下面這篇文章主要給大家介紹了基于Java實(shí)現(xiàn)區(qū)塊鏈的相關(guān)資料,需要的朋友可以參考下2021-08-08
Mybatis 如何批量刪除數(shù)據(jù)的實(shí)現(xiàn)示例
這篇文章主要介紹了Mybatis 如何批量刪除數(shù)據(jù)的實(shí)現(xiàn)示例,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2021-03-03
如何使用Mockito調(diào)用靜態(tài)方法和void方法
這篇文章主要介紹了如何使用Mockito調(diào)用靜態(tài)方法和void方法的操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-07-07
java中List去除重復(fù)數(shù)據(jù)的5種方式總結(jié)
這篇文章主要給大家總結(jié)介紹了關(guān)于java中List去除重復(fù)數(shù)據(jù)的5種方式,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2021-01-01
詳解SpringBoot Controller接收參數(shù)的幾種常用方式
這篇文章主要介紹了詳解SpringBoot Controller接收參數(shù)的幾種常用方式,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2019-10-10

