您好,登錄后才能下訂單哦!
這期內容當中小編將會給大家帶來有關hbase與hive是怎么實現數據同步的,文章內容豐富且以專業的角度為大家分析和敘述,閱讀完這篇文章希望大家可以有所收獲。
一、impala與hive的數據同步
首先,我們在hive命令行執行showdatabases;可以看到有以下幾個數據庫:
然后,我們在impala同樣執行showdatabases;可以看到:
目前的數據庫都是一樣的。
下面,我們在hive里面執行create databaseqyk_test;創建一個數據庫,如下:
然后,我們使用qyk_test這個數據庫創建一張表,執行create table user_info(idbigint, account string, name string, age int) row format delimitedfields terminated by ‘\t';如下:
此時,我們已經在hive這邊創建好了,然后直接在impala這邊執行showdatabases;可以看到:
連qyk_test這個數據庫都沒有。
接下來,我們在impala執行INVALIDATEMETADATA;然后再查詢可以看到:
數據庫和表都會同步過來。
好了,筆者來做個總結:
如果在hive里面做了新增、刪除數據庫、表或者數據等更新操作,需要執行在impala里面執行INVALIDATEMETADATA;命令才能將hive的數據同步impala;
如果直接在impala里面新增、刪除數據庫、表或者數據,會自動同步到hive,無需執行任何命令。
二、hive與hbase的數據同步
首先,我們在hbase中創建一張表create ‘user_sysc', {NAME =>‘info'},然后,我們在hive中執行
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')
創建一張外部表指向hbase中的表,然后,我們在hive執行insert into tableuser_sysc select id,name fromuser_info;入一步份數據到user_sysc可以看到:
然后,我們在hbase里面執行scan‘user_sysc'可以看到:
接下來,我們在hbase里面執行deleteall ‘user_sysc',‘11'刪掉一條數據,如下:
然后,我在hive里面查詢看看,如下:
說明自動同步過來了。因此,只要創建hive表時,與hbase中的表做了映射,表名和字段名可以不一致,之后無論在hbase中新增刪除數據還是在hive中,都會自動同步。
如果在hive里面是創建的外部表需要在hbase中先創建,內部表則會在hbase中自動創建指定的表名。
上述就是小編為大家分享的hbase與hive是怎么實現數據同步的了,如果剛好有類似的疑惑,不妨參照上述分析進行理解。如果想知道更多相關知識,歡迎關注億速云行業資訊頻道。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。