标签:sqoop hcatalog 04 -- 09 db hive 2021 tbl
mysql同步sqoop通用脚本
#!/bin/bash
# 要同步的表名 db.tbl
table_name=$1
# 表所在数据库url host:port
url=$2
#登录mysql的用户密码
username=$3
password=$4
# 同步昨天的数据
p_d=$(date -d "-1 days" +%Y-%m-%d)
# 日志存放目录
log="/tmp/chVmibiSUcyaqvWY/$p_d"
# 数据同步base目录
base="/batch_data_sync/mysql"
# 执行sqoop任务的目录
sqoop_exec_dir="$base/sqoop_exec"
if [ ! -d $sqoop_exec_dir ];then
mkdir -p $sqoop_exec_dir
fi
cd $sqoop_exec_dir
echo $table_name
dt=(${table_name//./ })
db=${dt[0]}
tbl=${dt[1]}
ts=$(date +%s%3N)
task_dir="/tmp/chVmibiSUcyaqvWY/$sqoop_exec_dir/"$db"_"$tbl"_"$p_d"_"$ts
mkdir -p $task_dir
cd $task_dir
echo "start $db $tbl $(pwd)" >> $log.log
hive_db="ods_"$db
hive_tbl=$tbl
hive -e "CREATE DATABASE IF NOT EXISTS $hive_db;desc $hive_db.$hive_tbl;" 2>&1 | grep 'Table not found'
rtstatus=$?
echo $rtstatus
if [ $rtstatus -ne 0 ]; then
echo "$hive_db.$hive_tbl表已存在!"
hive -e "alter table $hive_db.$hive_tbl drop if exists partition(p_d='$p_d')"
sqoop import \
--connect "jdbc:mysql://$url/$db?useSSL=false&tinyInt1isBit=false" \
--username $username --password $password \
--table $tbl \
--hcatalog-database $hive_db \
--hcatalog-table $hive_tbl \
--hcatalog-partition-keys p_d \
--hcatalog-partition-values $p_d \
--hcatalog-storage-stanza 'stored as orc tblproperties ("orc.compress"="SNAPPY")' \
-m 1
else
echo "$hive_db.$hive_tbl表不存在!"
sqoop import \
--connect "jdbc:mysql://$url/$db?useSSL=false&tinyInt1isBit=false" \
--username $username --password $password \
--table $tbl \
--create-hcatalog-table \
--hcatalog-database $hive_db \
--hcatalog-table $hive_tbl \
--hcatalog-partition-keys p_d \
--hcatalog-partition-values $p_d \
--hcatalog-storage-stanza 'stored as orc tblproperties ("orc.compress"="SNAPPY")' \
-m 1
fi
cd $sqoop_exec_dir
echo "finish $hive_db $hive_tbl $p_d" >> $log.log
sleep 5
done
标签:sqoop,hcatalog,04,--,09,db,hive,2021,tbl 来源: https://blog.csdn.net/weixin_42756361/article/details/115545291
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。