使用SQOOP全量和增量导入脚本(HIVE--MYSQL MYSQL--HIVE)

 

一、MYSQL ----> HIVE

1、考虑到安全性问题,我们会将数据库、服务器的连接信息放在一个配置脚本里,然后在执行脚本里调用这个配置脚本,从而使配置和执行进行解耦分离
2、配置脚本(db_config.sh)

!/bin/sh
jdbc=mysql://ip:3326/test
username=root
password=root
table=wb_robot
hive-database=zl_test
hive-table=t1

3、将MySQL历史全量数据进行导入到hive

!/bin/sh
 # @date 2019-08-04
 # mysql表按天分区全量导入hive库
source /etc/profile
 ##  设置时间
 if [[ -z $1 ]]; then
datetime=`date -d "-1 day" +"%Y-%m-%d"`
else
datetime=$1
fi
echo "datetime:${datetime}"
statdate=`date -d "${datetime}" +"%Y%m%d"`
echo "statdate:${statdate}"
two_days_ago=`date -d "2 days ago" +"%Y-%m-%d"`

source /usr/local/zll/config/db_config.sh

/opt/cloudera/parcels/CDH/bin/sqoop import  \
--connect ${jdbc} \
--username ${username} \
--password ${password} \
--table total \
--hive-database ods \
--hive-table t_ods_di_bank_messages \
--hive-partition-key ds \
--hive-partition-value $two_days_ago \
--hive-import \
--m 1

4、增量导入

#!/bin/sh
 # @date 2019-08-04
 # mysql表按天分区全量导入hive库
source /etc/profile
 ##  设置时间
 if [[ -z $1 ]]; then
datetime=`date -d "-1 day" +"%Y-%m-%d"`
else
datetime=$1
fi
echo "datetime:${datetime}"
statdate=`date -d "${datetime}" +"%Y%m%d"`
echo "statdate:${statdate}"
two_days_ago=`date -d "2 days ago" +"%Y-%m-%d"`

source /usr/local/zll/config/db_config.sh

function wxrbt_senstv(){
    echo "[`date +'%Y-%m-%d %H:%M:%S'`]"
    echo "将敏感信息源表导入到hive的ods层"
    echo " 按天分区,增量导入 mysql导入hive(t_ods_di_wxrbt_senstv)"
    /opt/cloudera/parcels/CDH/bin/sqoop import  \
--connect ${jdbc} \
--username ${username} \
--password ${password} \
--table sensitives \
--hive-database ods \
--hive-table t_ods_di_bank_senstv \
--hive-partition-key ds \
--hive-partition-value ${statdate} \
--incremental append \
--check-column dates \
--last-value $two_days_ago \
--hive-import \
--m 1
}

二、HIVE ----> MYSQL

将Hive表导入到MySQL,这里的Hive表一般是存放的指标数据,用于前后端的使用

#!/bin/sh
 # @date 
 # mysql表按天分区全量导入hive库
source /etc/profile
 ##  设置时间
 if [[ -z $1 ]]; then
datetime=`date -d "-1 day" +"%Y-%m-%d"`
else
datetime=$1
fi
echo "datetime:${datetime}"
statdate=`date -d "${datetime}" +"%Y%m%d"`
echo "statdate:${statdate}"

function wxrbt_total_cnt(){
    echo "[`date +'%Y-%m-%d %H:%M:%S'`] mysql导入hive"
   /opt/cloudera/parcels/CDH/bin/sqoop export --connect jdbc:mysql://ip:3326/ztdlk --username root --password  root --table user_total_cnt --input-null-string '\\N' --input-null-non-string '\\N' --input-fields-terminated-by '\t' --export-dir /user/hive/warehouse/ads.db/t_ads_user_total_cnt/ds=20190812 --m 1
}

三、遇到问题:

 
解决方式:
1.检查一下两个表的字段是否对的上
2.类型
3.hive中有的null,需要添加语句

--input-null-string '\\N' --input-null-non-string '\\N' --input-fields-terminated-by '\t'
  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值