最近用到hadoop的HIVE,不知道怎麼和ORACLE同步啊,誰能給個簡單的例子
hive庫是基於hadoop的數據倉庫工具。
可將數據文件格式化為一個數據表,並對外提供一個sql查詢。
但是hive庫不支持 insert into。。。values()
不支持 delete....
不支持 update....
只能使用insert overwrite table *** select * from **
create table ** select **
除此之外,sqoop工具,提供了從多種數據庫與hive庫間的同步功能,其中以oracle同步數據到hive為例。
sqoop import -D oracle.sessionTimeZone=Asia/Shanghai \ #不多說,一看便知,格式化時區
--connect jdbc:oracle:thin:@127.0.0.1:1521:ss \ #數據的基本鏈接
--username root \
--password root \
--table t_table \ #oracle中需要被同步的表格
--columns KEY,KPV,KTIME \ #假設oracle表的字段很多很多。此處是需要同步的字段。注意是大寫的!!!!
--where "TRUNC(KTIME)>=TRUNC(ADD_MONTHS(SYSDATE,-1),'month') AND TRUNC(KTIME)<=TRUNC(LAST_DAY(ADD_MONTHS(SYSDATE,-1)))" \ #假設很多很多數據,我只要上個月的數據。
--warehouse-dir /hadoop/zc/t_table \ #sqoop同步到hive中中間數據存儲的位置。
--hive-import \ #同步到hive裡面
-m 1 \ #map的個數
--split-by KEY \ #根據KEY字段分區
--hive-table hive.table \ #同步到hive庫的table表中
--hive-overwrite #如果有數據的話,全部覆蓋
其中oracle的同步需要注意時區的格式化。
oracle同步如果不指定split-by會同步失敗
CSDN移動問答