hadoop hive 与 Oracle 互相导入数据

#1.在Oracle上建立要处理的表
create table SOURCE_TABLE_NAME as 
SELECT t.*,rownum as row_num FROM SOURCE_TABLE_NAME_O t ;
alter table SOURCE_TABLE_NAME
  add constraint SOURCE_TABLE_NAME_P primary key (ROW_NUM);
#2.在Oracle上建立处理结果表
DEST_TABLE_NAME
#3.oracle导入到hadoop
nohup \
sqoop import \
--hive-import \
--connect jdbc:oracle:thin:@192.168.1.14:1521:oradb1 \
--username USER1 \
--password "密码" \
--verbose -m 32 \
--table SOURCE_TABLE_NAME \
--hive-table db_hive.SOURCE_TABLE_NAME \
--fields-terminated-by '\t' \
--lines-terminated-by '\n' &
#4.计算
hive -e "drop table db_hive.DEST_TABLE_NAME ;
create table db_hive.DEST_TABLE_NAME row format delimited fields terminated by '\t' STORED AS TEXTFILE as \
select \
max(Dn)  as  Dn, \
EutranCellTdd_uk , \
max(EutranCellTdd_name)  as  EutranCellTdd_name, \
max(GsmRelation) as GsmRelation, \
adj_uk, \
max(adj_name) as adj_name, \
max(EnbFunction_uk)  as  EnbFunction_uk, \
max(EnbFunction_name)  as  EnbFunction_name, \
max(ManagedElement_uk)  as  ManagedElement_uk, \
max(ManagedElement_name)  as  ManagedElement_name, \
max(omc_uk)  as  omc_uk, \
max(omc_name)  as  omc_name, \
sum(HO_ToGsmAttOutPerRelation)         as HO_ToGsmAttOutPerRelation, \
sum(HO_ToGsmSuccOutPrepPerRelation)    as HO_ToGsmSuccOutPrepPerRelation, \
sum(HO_ToGsmSuccOutPerRelation)        as HO_ToGsmSuccOutPerRelation, \
max(VENDOR_UK)  as  VENDOR_UK, \
max(VENDOR_NAME)  as  VENDOR_NAME, \
max(city_name) as city_name \
from db_hive.SOURCE_TABLE_NAME \
group by EutranCellTdd_uk, adj_uk ;"
#5.hadoop导出oracle(需要清空目标表DEST_TABLE_NAME)
sqoop export \
--connect jdbc:oracle:thin:@192.168.1.14:1521:oradb1 \
--username USER1 \
--password "密码" \
--table DEST_TABLE_NAME \
--export-dir /user/hive/warehouse/db_hive.db/DEST_TABLE_NAME \
--input-fields-terminated-by '\t' \
--input-lines-terminated-by '\n' \
--null-string '\\N' \
--null-non-string '\\N'

 

转载于:https://my.oschina.net/fengyunfu/blog/807308

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值