Hive基础之自定义封装hivefile命令
存在的问题:当把hql写到shell中,不方便阅读;但把hql写到文件中,又传递不了参数;怎么办呢?
自定义hivefile
执行方式形如:
第一个参数为要执行的hql文件,后续的参数为要替换的key-value对。
hivefile d:/hivefile_test.hql -date "2013-01-01" -name "luogk"
hivefile思路分析:
本案例脚本和代码均放置在/home/spark/software/hivefile路径下,lib包放在/home/spark/lib下
1、将hql脚本放置在单独的脚本中:hivefile_test.hql
select a.id,sum(b.amount) from city a join sale_order b on a.id=b.city_id where b.amount > {$amount} group by a.id
2、创建shell脚本:hivefile_test.sql,在sh脚本中通过hivefile调用hql文件,并传递进去要替换的参数键值对
#!/bin/bash
. ~/.bash_profile
cd /home/spark/software/hivefile
hivefile ./hivefile_test.hql -amount
3、创建hivefile脚本
. ~/.bash_profile
sql=`java -jar /home/spark/lib/hivefile.jar $*` #$*用于传递参数
echo "$sql"
hive -e "$sql"
4、hivefile做要的事情
1)获取到hive -e命令行的参数,形如:c:/hive_test.hql -date "2013-01-01" ;
2)解析参数,解析规则为:第一个参数为sql文件名,从第二个参数开始要替换的变量名采用"-"开头,紧跟着的是该变量名的值,一次类推;
3)java代码获取到文件名,读取该文件的内容,并使用值去替换掉文件中的占位符变量名;
4)将替换后的文件内容交给hive -e 去执行;
5、执行hivefile_test.sh
cd /home/spark/software/hivefile
hivefile_test.sh
6、为了使用hivefile脚本更加方便,将hivefile脚本封装到~/.bash_profile中去,使得在任意位置都可以执行hivefile命令,在path中添加hivefile的路径:
export PATH=.:/home/spark/software/hivefile
添加到环境变量后,就可以在任意路径下执行hivefile命令,形如:
hivefile /home/spark/software/hivefile/hivefile_test.hql -amount
Hive基础之自定义封装hivefile命令的更多相关文章
- [转帖]Hive基础(一)
Hive基础(一) 2018-12-19 15:35:03 人间怪物 阅读数 234 版权声明:本文为博主原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明. 本文链接 ...
- Hive基础概念、安装部署与基本使用
1. Hive简介 1.1 什么是Hive Hives是基于Hadoop的一个数据仓库工具,可以将结构化的数据文件映射为一张数据库表,并提供类SQL查询功能. 1.2 为什么使用Hive ① 直接使用 ...
- Hive基础(1)
Hive基础(1) Hive的HQL(2) 1. Hive并不是分布式的,它独立于机器之外,类似于Hadoop的客户端. 2. 元数据和数据的区别,前者如表名.列名.字段名等. 3. Hive的三种安 ...
- easyUI单元格合并自定义封装
1.指定列的行合并 * 效果图: 合并自定义封装(一) * 程序: function mergeGridColCells(grid,rowFildName) { var rows=grid.dat ...
- iOS开发——UI篇Swift篇&玩转UItableView(四)自定义&封装
UItableView自定义&封装 一:Model class AppsModel: NSObject { //定义模型的三个属性 var imageName:String! //图片名称 v ...
- 《Programming Hive》读书笔记(两)Hive基础知识
<Programming Hive>读书笔记(两)Hive基础知识 :第一遍读是浏览.建立知识索引,由于有些知识不一定能用到,知道就好.感兴趣的部分能够多研究. 以后用的时候再具体看.并结 ...
- Hive基础(4)---Hive的内置服务
版权声明:<—— 本文为作者呕心沥血打造,若要转载,请注明出处@http://blog.csdn.net/gamer_gyt <—— 目录(?)[+] 一:Hive的几种内置服务 ...
- Hive基础(2)---(启动HiveServer2)Hive严格模式
启动方式 1, hive 命令行模式,直接输入/hive/bin/hive的执行程序,或者输入 hive –service cli 用于linux平台命令行查询,查询语句基本跟mysql查询语句类似 ...
- Hive基础知识
一.产生背景 1.MapReudce编程繁琐,需要编写大量的代码 2.HDFS中存放的都是文件,在HDFS中没有Scheme的概念,无法用SQL进行快速的查询. 二.Hive的概念 Hive是基于Ha ...
随机推荐
- wap图片滚动特效_无css3 元素js脚本编写
手机图片滑动切换,网上有很多这样的例子,但都借助于其他组件,让代码混乱的不行:还有就是用到css3里的 transform:translate(x,y);移动元素,不过发现在不支持css3的设备上马上 ...
- css之伪类选择器:before :after(::before ::after)
一.总结: ::before是在标签内容前面添加内容, ::after是在标签内容后面添加内容 ::before ::after与:before :after的区别:css3中修订后的伪元素使用:: ...
- Shiro权限控制框架
Subject:主体,可以看到主体可以是任何可以与应用交互的"用户": SecurityManager:相当于SpringMVC中的DispatcherServlet或者Strut ...
- Python Beautiful Soup模块的安装
以安装Beautifulsoup4为例: 1.到网站上下载:http://www.crummy.com/software/BeautifulSoup/bs4/download/ 2.解压文件到C:\P ...
- 共享内存是最快的一种IPC方式
在linux进程间通信的方式中,共享内存是一种最快的IPC方式.因此,共享内存用于实现进程间大量的数据传输,共享内存的话,会在内存中单独开辟一段内存空间,这段内存空间有自己特有的数据结构,包括访问权限 ...
- SVN Server配置详解 及备份
SVN简介和工作原理 subversion(简称svn)是近几年崛起的版本管理软件,是cvs的接班人,目前绝大多数开源软件都使用svn作为代码版本管理软件.Subversion支持linux和wind ...
- 使用NSOperation使用,创建线程中传递多个参数
参考:http://blog.csdn.net/dqjyong/article/details/7677557 参考:http://stackoverflow.com/questions/232761 ...
- JavaScript-获得当前时间
js获得当前时间 var myDate = new Date(); myDate.getYear(); //获取当前年份(2位) myDate.getFullYear(); //获取完整的年份(4位, ...
- HDU 5701 中位数计数
这题真的很恶心,做了一天,最后问学长,才懂题意是什么,原来我一直都没读懂题.这我真的就无语了,你的题意多两句话会死啊?你测试样例多两个例子就不行啊?真蛋疼,题意都不懂,还做个shi? 题里说的是区间, ...
- easy dp
1.将一堆正整数分为2组,要求2组的和相差最小. //File Name: nod1007.cpp //Author: long //Mail: 736726758@qq.com //Created ...