在运行hive命令时传入参数,使用-hivevar 和 -hiveconf 两种参数选项,来给此次的执行脚本传入参数

-hivevar : 传参数 ,专门提供给用户自定义变量。

-hiveconf : 传参数,包括了hive-site.xml中配置的hive全局变量。

(1)脚本调用

test.sql

use default;
select
'${hiveconf:month}' as month
from default.user1;
use default;
select
'${hivevar:month}' as month
from default.user1;

start.sh

#!/bin/sh
#ecoding=utf- set -x
month=`date -d 'last month' +%Y-%m`
hive --hiveconf month=$month -f test.sql
#!/bin/sh
#ecoding=utf- set -x
month=`date -d 'last month' +%Y-%m`
hive --hivevar month=$month -f test.sql

(2)直接传参

bash:hive -f 参数传递,执行文件

CDH 集群

  命令: hive --hivevar v_date='20170630' -S -f test1.hql    -- 返回3条记录

  命令: hive --hivevar v_date='20170101' -S -f test1.hql    -- 返回0条记录

FI集群:

命令: beeline --hivevar v_date='20170630' -S -f test1.hql    -- 返回3条记录

查看文件内容:

  cat test1.hql

    use default; select * from logs where dt='${hivevar:v_date}' limit 3;

  cat test2.hql 

    use default; select * from logs limit 3;

-------------------------------------------------------更正规的解释------------------------------------------------------

1. hiveconf

hiveconf用于定义HIVE执行上下文的属性(配置参数),可覆盖覆盖hive-site.xml(hive-default.xml)中的参数值,如用户执行目录、日志打印级别、执行队列等,常用的配置属性如下:

参数名称 参数解释
hive.metastore.warehouse.dir 启动时指定用户目录,不同的用户不同的目录
hive.cli.print.current.db 显示当前数据库
hive.root.logger 输出日志信息
hive.cli.print.header 显示列名称
mapred.job.queue.name 执行队列名称

如果熟悉HIVE操作的话,这些配置属性还可以利用“set”指令进行修正,如下:

# 首先启动HIVE
hive
# 然后设置参数
set mapred.job.queue.name=root.default

上面的指令可等价于“hive --hiveconf”命令,如下:

hive --hiveconf "mapred.job.queue.name=root.default"

2. hivevar

hivevar用于定义HIVE运行时的变量替换,类似于JAVA中的“PreparedStatement”,与“${}”配合使用,示例如下:

#  定义变量,并启动HIVE CLI
hive --hivevar my="" --database deafult -e 'select * from a1 where concat(year, month) = ${my} limit 10';

3. define

define与hivevar用途完全一样,还有一种简写“-d”,示例如下:

#   定义变量
hive --hiveconf "mapred.job.queue.name=root.default" -d my="" --database default -e
'select * from mydb where concat(year, month) = ${my} limit 10';

hive传递参数与调用的更多相关文章

  1. 父窗口和iframe子窗口之间相互传递参数和调用函数或方法

    1.父窗口向子窗口传递参数: 可以在url中添加参数:2.html?a=1&b=2&c=3 然后在子页面上可用js解析,提供一个函数: function getQueryStr(sAr ...

  2. 利用GetType反射方法再调用方法进行传递参数实现调用

    直接上代码: TestMenuService.MenuServiceCSClient tesClient = new TestMenuService.MenuServiceCSClient(); va ...

  3. bat调用exe文件并且传递参数

    bat调用exe文件并且传递参数 bat调用exe,并且传递日期参数,代码: @echo off cd "E:\SublimeWorks\exe" start xyzj_shrjj ...

  4. Java 给Thread传递参数

    一开始我想把run()函数写成有参函数来传值,后来发现行不通.经过查找,最终用如下方法传递了参数: 也就是用另外一个有参函数setTar()传递参数. 调用的时候用这4行code传递参数: 上面是用i ...

  5. 工作随笔——Java调用Groovy类的方法、传递参数和获取返回值

    接触Groovy也快一年了,一直在尝试怎么将Groovy引用到日常工作中来.最近在做一个功能的时候,花了点时间重新看了下Java怎么调用Groovy的方法.传递参数和获取返回值. 示例Groovy代码 ...

  6. js给定时器调用传递参数

    给定时器调用传递参数 无论是window.setTimeout 还是window.setInterval,在使用函数名作为调用句柄时都不 能带参数,而在许多场合必需要带参数,这就需要想方法解决.例如对 ...

  7. VB脚本调用exe应用程序并传递参数

    VB脚本调用应用程序,并传递参数给exe应用程序: Private Sub CommandButton1_Click() Dim a a = Shell("D:\\ExperimentLin ...

  8. 【M12】了解“抛出一个exception”与“传递一个参数”或“调用一个虚函数”之间的差异

    1.方法参数的声明语法和catch语句的语法是一样的,你可能会认为主调方法调用一个方法,并向其传递参数,与抛出一个异常传递到catch语句是一样的,是的,有相同之处,但也有更大的不同. 2.主调方法调 ...

  9. java调用python程序以及向python程序传递参数

    在做项目的时候,经常会碰到这个问题,主要程序是用java写的,有些功能使用python写的,整个项目需要把java代码和python代码进行整合,在一个项目里面运行,这就涉及到java调用python ...

随机推荐

  1. JAVA实验报告及第八周总结

    JAVA第八周作业 实验报告六 实验一 编写一个类,在其main()方法中创建一个一维数组,在try字句中访问数组元素,使其产生ArrayIndexOutOfBoundsException异常.在ca ...

  2. sshpass和做软链接

    参考: https://help.aliyun.com/document_detail/54530.html?spm=5176.11065259.1996646101.searchclickresul ...

  3. 【Python】【demo实验22】【练习实例】【猴子吃桃问题】

    原题: 猴子吃桃问题:猴子第一天摘下若干个桃子,当即吃了一半,还不瘾,又多吃了一个第二天早上又将剩下的桃子吃掉一半,又多吃了一个.以后每天早上都吃了前一天剩下的一半零一个.到第10天早上想再吃时,见只 ...

  4. Excel输入公式后只显示公式却不计算如何解决?

    在使用Excel函数公式的时候,您是否碰到过输入公式,按下Enter键之后,单元格仍只显示公式,而不显示计算结果.   工具/原料   Excel 教程以Excel2013为例 方法/步骤     教 ...

  5. X86逆向11:F12暂停法的妙用

    本节课将介绍F12暂停法的使用技巧,F12暂停法的原理其实很简单,当我们点击OD中的暂停按钮时,OD会将当前的堆栈状态保存起来,并暂停当前窗体的线程执行,直到我们点击运行按钮OD才会唤醒全部线程并继续 ...

  6. 怎样单独遍历NodeList的键、值和键值对

    1. 单独遍历键: NodeList.prototype.keys(); 2. 单独遍历值: NodeList.prototype.values(); 3. 遍历键值对: NodeList.proto ...

  7. 10-Perl 循环

    1.Perl 循环一般情况下,语句是按顺序执行的:函数中的第一个语句先执行,接着是第二个语句,依此类推.有的时候,可能需要多次执行同一块代码.编程语言提供了更为复杂执行路径的多种控制结构.循环语句允许 ...

  8. Ioc和Aop底层原理

    Spring中主要用到的设计模式有工厂模式和代理模式. IOC:Inversion of Control控制反转,也叫依赖注入,通过 sessionfactory 去注入实例:IOC就是一个生产和管理 ...

  9. URL的 ? 和 # (hash),如何将参数保存在URL中,用于刷新获取之前的变量?

    URL中会带上参数,假如是?开头的,那这个是会被加入到ajax请求中的,#(hash)相当于书签锚点,用于定位页面,不会加入到ajax请求中,所以有些时候,我们可以把一些参数放在#后面 如何获取URL ...

  10. init是一个自定义方法名

    init是一个自定义方法名,用于初始化页面变量.上面的代码表示初始化方法是在当前网页加载后执行的(当浏览器打开网页时,触发窗口对象的onload方法,用上面的代码执行名为init的初始化方法).事实上 ...