hadoop生態系統學習之路(八)hbase與hive的數據同步以及hive與impala的數據同步


在之前的博文中提到,hive的表數據是能夠同步到impala中去的。

一般impala是提供實時查詢操作的,像比較耗時的入庫操作我們能夠使用hive。然后再將數據同步到impala中。另外,我們也能夠在hive中創建一張表同一時候映射hbase中的表。實現數據同步。


以下。筆者依次進行介紹。

一、impala與hive的數據同步

首先,我們在hive命令行運行show databases;能夠看到有以下幾個數據庫:
這里寫圖片描寫敘述
然后,我們在impala相同運行show databases;能夠看到:
這里寫圖片描寫敘述
眼下的數據庫都是一樣的。


以下,我們在hive里面運行create database qyk_test;創建一個數據庫,例如以下:
這里寫圖片描寫敘述
然后,我們使用qyk_test這個數據庫創建一張表,運行create table user_info(id bigint, account string, name string, age int) row format delimited fields terminated by ‘\t’;例如以下:
這里寫圖片描寫敘述
此時。我們已經在hive這邊創建好了,然后直接在impala這邊運行show databases;能夠看到:
這里寫圖片描寫敘述
連qyk_test這個數據庫都沒有。
接下來。我們在impala運行INVALIDATE METADATA;然后再查詢能夠看到:
這里寫圖片描寫敘述
數據庫和表都會同步過來。
好了,筆者來做個總結:
假設在hive里面做了新增、刪除數據庫、表或者數據等更新操作,須要運行在impala里面運行INVALIDATE METADATA;命令才干將hive的數據同步impala。
假設直接在impala里面新增、刪除數據庫、表或者數據。會自己主動同步到hive,無需運行不論什么命令。

二、hive與hbase的數據同步

首先,我們在hbase中創建一張表create ‘user_sysc’, {NAME => ‘info’},然后,我們在hive中運行

CREATE EXTERNAL TABLE user_sysc (key int, value string) ROW FORMAT SERDE 'org.apache.hadoop.hive.hbase.HBaseSerDe' STORED BY 'org.apache.hadoop.hive.hbase.HBaseStorageHandler' WITH SERDEPROPERTIES ( 'serialization.format'='\t', 'hbase.columns.mapping'=':key,info:value', 'field.delim'='\t') TBLPROPERTIES ('hbase.table.name'='user_sysc')

創建一張外部表指向hbase中的表,然后,我們在hive運行insert into table user_sysc select id,name from user_info;入一步份數據到user_sysc能夠看到:
這里寫圖片描寫敘述
然后。我們在hbase里面運行scan ‘user_sysc’能夠看到:
這里寫圖片描寫敘述
接下來,我們在hbase里面運行deleteall ‘user_sysc’, ‘11’刪掉一條數據。例如以下:
這里寫圖片描寫敘述
然后。我在hive里面查詢看看。例如以下:
這里寫圖片描寫敘述
說明自己主動同步過來了。因此,僅僅要創建hive表時。與hbase中的表做了映射。表名和字段名能夠不一致,之后不管在hbase中新增刪除數據還是在hive中。都會自己主動同步。
假設在hive里面是創建的外部表須要在hbase中先創建。內部表則會在hbase中自己主動創建指定的表名。

由於hive不支持刪除等操作。而hbase里面比較方便,所以我們能夠採用這樣的方式。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM