解决hive无法传参问题思路
由于hive执行过程中参数必须写死,无法进行传递参数。利用shell脚本和java编程进行解决
#!/bin/sh
#date = `date -d -1days '+%Y-%m-%d'`
if [ $# = "1" ]; then
date=$1
else
date=`date -d -1days '+%Y-%m-%d'`
fi
echo $date
#如果没传递参数的话,拿到前一天的时间
cd /opt/cloudy/program/rpt_sale_daily
#打开指定目录
hiveF ./rpt_sale_daily.hql -date $date
#执行hiveF 进行数据分析和抽取
hive2mysql ./aa.property -date $date
#把抽取的数据加载到mysql数据库中
其中hiveF 和hive2mysql是利用java进行开发
(hiveF ./rpt_sale_daily.hql -date $date)
在hiveF中,java读取此hql脚本进行替换date字符,然后执行
sql=`java -jar /opt/cloudy/lib/hiveF.jar $*`
#执行java拿到sql命令
echo $sql
hive -e "$sql" -i /opt/cloudy/bin/hiveF-init.sql
#hive -e 在shell命令行中执行hive命令 -i用于传递UDF
(hive2mysql ./aa.property -date $date)
java -jar /opt/cloudy/lib/hive2mysql.jar $*
#执行jar命令替换参数并且在java中执行hive和mysql命令
理解:其中核心在hiveF和hive2mysql的理解 hiveF负责分析本地HDFS的文件落地到hive得到数据结果 hive2mysql用于把hive数据转移到mysql中 (-i用于更好的管理UDF文件)
~
最新文章
- Util应用程序框架公共操作类(五):异常公共操作类
- DotNetCore跨平台~Startup类的介绍
- HDU 4605 Magic Ball Game(离线算法)
- hiho_1058_combination_lock
- HDU 4588 Count The Carries(找规律,模拟)
- Debian安装Apache2+MySQL5+PHP5(zz)
- 【BZOJ 1040】 [ZJOI2008]骑士
- CentOS7安装mysql-server
- xapian安装
- MEMS开关
- ssh登录的时候,根本不给输入密码的机会,直接拒绝,是因为BatchMode的设置
- linux下swoole的安装
- 【CSS】background 的覆盖
- .NET Core微服务系列基础文章索引(目录导航Final版)
- sql - 递归update
- 升级安装APK兼容Android7.0,解决FileUriExposedException
- python3 验证码去噪
- Linux中的共享链接库shared libraries
- 【Xmail】使用Xmail搭建局域网邮件服务器
- 【跨域】#001 JSONP原理解析【总结】