原文:dpi数据接入shell脚本_weixin_34416754的博客-CSDN博客
##############从ftp服务器拿数据文件
#!/bin/bash
#获取感知优良率DPI数据
#DCN服务器信息
u=Sichuan
p=S988188#
ip=137.192.5.53
#获取日期,根据日期抓取文件
T=`date -d "3 days ago" +%Y%m%d`
#写入日志
echo "(`date`) get data start...." >> /vm/hym/dpidata/getdata.log
echo "===================================================" >> /vm/hym/dpidata/getdata.log
function getdata_from_ftp(){
ftp -n <<EOF
open ${ip}
user ${u} ${p}
binary
cd / #远程服务器文件目录
#打开交互模式
prompt off
#下载特定日期的数据文件
mget *$T*
close
bye
EOF
}
#从DCN服务器get数据到本地目录
getdata_from_ftp >>/vm/hym/dpidata/getdata.log
#批量处理数据文件,将'|' 替换为','
sed -i 's/|/,/g' *$T*
#拷贝当天的数据文件到88服务器
scp *$T* root@133.37.23.88:/home/hdfs/hym/dpidata/
#触发88服务器上面put数据到hdfs的脚本
ssh root@133.37.23.88<<EOF
cd /home/hdfs/hym/dpidata/
sh put_data.sh ${T}
EOF
##############从ftp服务器拿数据文件,放到hive表里
#!/bin/bash
#获取数据的天分区
T=`date -d "3 days ago" +%Y-%m-%d`
#在hdfs建立文件路径,将数据文件Put到hdfs
su - hdfs -c "hdfs dfs -mkdir -p /zxvmax/telecom/union/mobile_good_rate_DPI_GP_date/p_provincecode=510000/p_date=$T"
su - hdfs -c "hdfs dfs -put /home/hdfs/hym/dpidata/GP_$1.txt /zxvmax/telecom/union/mobile_good_rate_DPI_GP_date/p_provincecode=510000/p_date=$T"
su - hdfs -c "hdfs dfs -mkdir -p /zxvmax/telecom/union/mobile_good_rate_DPI_GR_date/p_provincecode=510000/p_date=$T"
su - hdfs -c "hdfs dfs -put /home/hdfs/hym/dpidata/GR_$1.txt /zxvmax/telecom/union/mobile_good_rate_DPI_GR_date/p_provincecode=510000/p_date=$T"
su - hdfs -c "hdfs dfs -mkdir -p /zxvmax/telecom/union/mobile_good_rate_DPI_EC_date/p_provincecode=510000/p_date=$T"
su - hdfs -c "hdfs dfs -put /home/hdfs/hym/dpidata/EC_$1.txt /zxvmax/telecom/union/mobile_good_rate_DPI_EC_date/p_provincecode=510000/p_date=$T"
#连接spark,修复表分区
/home/mr/spark/bin/beeline -u jdbc:hive2://133.37.23.88:18000/zxvmax -n mr -p ""<<Eof
msck repair table mobile_good_rate_DPI_EC_date;
msck repair table mobile_good_rate_DPI_GR_date;
msck repair table mobile_good_rate_DPI_GP_date;
Eof