hadoop学习工作总结(四)之数据同步
来源:互联网 发布:c语言项目开发 编辑:程序博客网 时间:2024/05/21 00:45
数据同步到hive:
#!/bin/sh
source ExitCodeCheck.sh
dateStr=$1
queueName=$2
oracle_connection=$3
oracle_username=$4
oracle_password=$5
sqoop_import_path=$6
dataName=$7;
sqoop import -D mapred.job.queue.name=${queueName} \
--connect ${oracle_connection} \
--username ${oracle_username} \
--password ${oracle_password} \
--query "SELECT \
DEPTNO,\
ACCEPTNO,\
POLNO,\
CLIENTNO,\
REVERIFY_DECISION\
from LIFEDATA.POS_ACCEPT where \$CONDITIONS " \
-m 1 --hive-table gbd_sx.${dataName}_LIFEDATA_POS_ACCEPT_DELTA \
--hive-drop-import-delims \
--fetch-size 10000 \
--hive-partition-key y,m,d \
--hive-partition-value ${dateStr:0:4},${dateStr:4:2},${dateStr:6:2} \
--target-dir ${sqoop_import_path}/${dataName}_LIFEDATA_POS_ACCEPT_DELTA \
--hive-overwrite \
--null-string '\\N' \
--null-non-string '\\N' \
--hive-import;
exitCodeCheck $?
数据同步到oracle
DROP table jkdm_toa_custom_fund_info;
create table jkdm_toa_custom_fund_info(
GBD_CLIENT_NO VARCHAR2(300),
GBD_MASTER_PARTY_ID VARCHAR2(300),
count_date VARCHAR2(300),
FUND_EFF_MON_VALUE number(20,2),
HOLD_FUND_ACCOUNT_CNT number(20,2),
FUND_ADD_FLAG VARCHAR2(300),
HOLD_FUND_PRODUCT_COUNT number(20,2),
FUND_QUAR_TRADE_CNT number(20,2),
FUND_QUAR_TRADE_AMT number(20,2),
FUND_DISTRIBUTE_ACTIVE_CNT number(20,2),
FUND_ACTIVE_TRANSFORM_CNT number(20,2),
FUND_YEAR_TRADE_CNT number(20,2),
FUND_YEAR_TRADE_AMT number(20,2),PT VARCHAR2(20))
partition by list(PT) (
partition P201407 values ('201407'),
partition P201408 values ('201408'),
partition P202406 values ('201409')
);
comment on column jkdm_toa_custom_fund_info.GBD_CLIENT_NO is '客户号';
comment on column jkdm_toa_custom_fund_info.GBD_MASTER_PARTY_ID is '集团主客户号';
comment on column jkdm_toa_custom_fund_info.count_date is '统计日期';
comment on column jkdm_toa_custom_fund_info.FUND_EFF_MON_VALUE is '基金有效客户当月基金净值';
comment on column jkdm_toa_custom_fund_info.HOLD_FUND_ACCOUNT_CNT is '基金有效客户持有基金合同总数';
comment on column jkdm_toa_custom_fund_info.FUND_ADD_FLAG is '是否本月基金新增客户';
comment on column jkdm_toa_custom_fund_info.HOLD_FUND_PRODUCT_COUNT is '持有基金产品数量';
comment on column jkdm_toa_custom_fund_info.FUND_QUAR_TRADE_CNT is '基金最近三个月累计交易的次数';
comment on column jkdm_toa_custom_fund_info.FUND_QUAR_TRADE_AMT is '基金最近三个月次均交易的金额';
comment on column jkdm_toa_custom_fund_info.FUND_DISTRIBUTE_ACTIVE_CNT is '基金累计配送活动次数';
comment on column jkdm_toa_custom_fund_info.FUND_ACTIVE_TRANSFORM_CNT is '基金累计活动转化次数';
comment on column jkdm_toa_custom_fund_info.FUND_YEAR_TRADE_CNT is '基金最近一年累计交易的次数';
comment on column jkdm_toa_custom_fund_info.FUND_YEAR_TRADE_AMT is '基金最近一个年次均交易的金额';
CREATE OR REPLACE PACKAGE pkg_jk_trun_part IS
/*
*删除数据
*/
PROCEDURE jk_tr_partion_table(id in varchar2,part_name in varchar2);
END pkg_jk_trun_part;
CREATE OR REPLACE PACKAGE BODY pkg_jk_trun_part IS
/*
* 删除数据
*/
PROCEDURE jk_tr_partion_table(id in varchar2,part_name in varchar2) IS
table_name_sql varchar2(400);
begin
table_name_sql := 'ALTER TABLE JKDMDATA.' || id||' truncate PARTITION '||part_name;
execute immediate table_name_sql;
commit;
end jk_tr_partion_table;
END pkg_jk_trun_part;
grant execute on pkg_jk_trun_part to jkdmopr;
grant select,insert,update,delete on jkdm_toa_custom_fund_info to jkdmopr;
## truncate tmp表
sqoop eval -D mapred.job.queue.name=${queueName} \
--connect jdbc:oracle:thin:@${jk_connection} \
--username ${jk_username} \
--password ${jk_password} \
--query " begin JKDMDATA.pkg_jk_trun_part.jk_tr_partion_table('jkdm_toa_custom_fund_info','P${dateStr:0:6}'); end; " \
## 同步数据到oracle
sqoop export -D mapred.job.queue.name=${queueName} \
--connect jdbc:oracle:thin:@${jk_connection} \
--table JKDMDATA.jkdm_toa_custom_life_info \
--columns GBD_CLIENT_NO,GBD_MASTER_PARTY_ID,count_date,LIFE_EFF_PAYMENT_AMT,LPMS_LIFE_ANNUAL_PAYMENT_AMT,LPMS_LIFE_BULK_PAYMENT_AMT,ELIS_ADD_FLAG,HOLD_ENDOWNMENT_PROD_FLAG,HOLD_MEDI_FEE_PROD_FLAG,HOLD_ACCID_INJURY_PROD_FLAG,HOLD_PENSION_PROD_FLAG,LIFE_PROD_COUNT,HOLD_LIFE_PROD_TYPE_COUNT,ELIS_DISTRIBUTE_ACTIVE_CNT,ELIS_TRANS_LINE_CNT,ELIS_ACTIVE_TRANSFORM_CNT,PT \
--username ${jk_username} \
--password ${jk_password} \
--input-fields-terminated-by '\001' \
--input-lines-terminated-by '\n' \
--input-null-non-string '\\N' \
--input-null-string '\\N' \
--num-mappers 16 \
--export-dir /user/hive/warehouse/gbd_360_mask.db/tmp_jkdm_toa_custom_life_info \
--verbose \
- hadoop学习工作总结(四)之数据同步
- hadoop学习工作总结(三)之数据优化
- hadoop学习工作总结(一)
- hadoop学习工作总结(二)之hive流程
- hadoop生态系统学习之路(八)hbase与hive的数据同步以及hive与impala的数据同步
- hadoop学习工作总结(五)之从txt文件导数到hive
- hadoop学习工作总结(六)之生成hive的一个存储过程
- 大数据学习篇:hadoop深入浅出系列之HDFS(四)——shell操作
- Hadoop学习之MapReduce(四)
- Hadoop学习之MapReduce(四)
- (大数据之MapReduce) Hadoop作业提交分析(四)
- 我的hadoop大数据之路(四)
- C++11并发学习之四:线程同步(续)
- hadoop学习之数据复制
- hadoop学习之数据完整性
- 大数据时代之hadoop(四):hadoop 分布式文件系统(HDFS)
- 大数据时代之hadoop(四):hadoop 分布式文件系统(HDFS)
- 大数据学习系列之四 ----- Hadoop+Hive环境搭建图文详解(单机)
- 归并排序算法的实现
- Mac10.9.4配置Nginx解析php
- hdu1695 GCD(莫比乌斯反演)
- 【BZOJ3669】【NOI2014】魔法森林 (spfa动态队列加点算法)
- 2014-9-2-JS之字符串操作
- hadoop学习工作总结(四)之数据同步
- live555编译使用及测试
- Android 中 加载Bitmap
- .project
- 第一个只出现一次的字符
- ORACLE表字段名称改为大写的方法
- 笔记本电脑搜索不到无线wifi处理办法
- STL 优先队列
- C++中拷贝构造函数