Hive中变量的使用
1.Hive配置属性
(1)命令行方式
Hive配置属性存储于 hiveconf 命名空间中,该命名空间中的属性是可读写的。在查询语句中插入 '${hiveconf:变量名}',就可以通过 hive -hiveconf来替换变量。例如,查询语句和执行方式如下:
[root]$cat test.sql #查看该文件 SELECT * FROM ${hiveconf:tablename} limit ${hiveconf:var_rows}; [root]$hive -hiveconf tablename='t1' -hiveconf var_rows=10 -f test.sql 或者 #!/bin/bash tablename="student" limitcount="8" hive -S -e "use test; select * from ${tablename} limit ${limitcount};"
需要注意的是:
- 如果有多个变量,每个变量前都要有参数 -hiveconf
- 变量赋值等号左右不能有空格(例如var_rows=10不能有空格)
(2)hql脚本方式
-- 设置变量 SET startdate=20181201; SET enddate=20181231; SET event_name=('网商节_主会场', '网商节_微信分享','网商节_主会场','网商节_分会场'); -- 查询语句 select event_name , count(1) pv , count(distinct ga_id) uv from edw_log.user_trace_log_di where dt between ${hiveconf:startdate} and ${hiveconf:enddate} and event_name in ${hiveconf:event_name} and data_source_id = '3' group by event_name ;
2.Hive命令行变量
(1)命令行方式
Hive命令行变量,存储于 hivevar 命名空间中,该命名空间中的变量是可读写的。使用方式和hive配置属性类似,只是在查询语句中插入的是'${hivecar:变量名}',其中命名空间"hivecar:"可以省略。例如:
[root]$cat test.sql SELECT * FROM ${hivevar:tablename} #等同于${tablename} limit ${hiveconf:var_rows}; [root]$hive -hivevar tablename='t1' -hiveconf var_rows=10 -f test.sql
因为命令行变量的命名空间是唯一可以省略的,因此:
- ${hivevar:变量名}等价于${变量名}
- 除了用hive -hivevar 变量赋值,还可以用hive -d,d是define的简写,例如下面三个执行方式是一样的:
[root]$hive -hivevar tablename= -f test.sql [root]$hive -define tablename= -f test.sql [root]$hive -d tablename= -f test.sql
(2)HQL脚本方式
SET hivevar:startdate=20181025; SET hivevar:enddate=20181027; SET hivevar:event_name=('网商节_主会场', '网商节_微信分享','网商节_主会场','网商节_分会场'); select event_name , count(1) pv , count(distinct ga_id) uv FROM edw_log.agent_trace_log_di WHERE dt between ${hivevar:startdate} and ${hivevar:enddate} and event_name in ${hivevar:event_name} AND data_source_id = '3' group by event_name ;
其他替换变量的方法:
利用shell脚本设置hive查询语句中的变量
利用Python替换Hive查询语句中的变量
参考资料:
Hive中变量的使用的更多相关文章
- Hive 中的变量
Hive的变量前面有一个命名空间,包括三个hiveconf,system,env,还有一个hivevar hiveconf的命名空间指的是hive-site.xml下面的配置变量值. system的命 ...
- mysql分组排序取最大值所在行,类似hive中row_number() over partition by
如下图, 计划实现 :按照 parent_code 分组, 取组中code最大值所在的整条记录,如红色部分.(类似hive中: row_number() over(partition by)) sel ...
- Hive之变量和属性
首先看一下hive cli工具对于变量的定义规定的几项功能: $ bin/hive -h usage: hive -d,--define <key=value> Vari ...
- 关于sparksql操作hive,读取本地csv文件并以parquet的形式装入hive中
说明:spark版本:2.2.0 hive版本:1.2.1 需求: 有本地csv格式的一个文件,格式为${当天日期}visit.txt,例如20180707visit.txt,现在需要将其通过spar ...
- 漫谈数据仓库之拉链表(原理、设计以及在Hive中的实现)
本文将会谈一谈在数据仓库中拉链表相关的内容,包括它的原理.设计.以及在我们大数据场景下的实现方式. 全文由下面几个部分组成: 先分享一下拉链表的用途.什么是拉链表. 通过一些小的使用场景来对拉链表做近 ...
- hive中创建表失败
使用create table命令创建表失败,如下错误信息: hive> create table test(id int,name string,age int,sex string); FAI ...
- Hive学习笔记——Hive中的分桶
对于每一个表(table)或者分区, Hive可以进一步组织成桶,也就是说桶是更为细粒度的数据范围划分.Hive也是针对某一列进行桶的组织.Hive采用对列值哈希,然后除以桶的个数求余的方式决定该条记 ...
- Hive中使用LZO
hive 中使用lzo 1 启动hive 错误Exception in thread "main" java.lang.NoClassDefFoundError: org/apac ...
- Hive中的集合数据类型
除了使用础的数据类型string等,Hive中的列支持使用struct, map, array集合数据类型. 数据类型 描述 语法示例 STRUCT 和C语言中的struct或者"对象&qu ...
随机推荐
- sqlite数据导入mysql
sqlite导出数据 1.首先将sqlite数据库中的数据库格式由db或者db3等转为.sql格式,方法如下: 首先是不修改路径的情况下,在命令行下(方法一): sqlite3 database_na ...
- ext.js的mvc
1.Ext.js的mvc开发模式 在ext.js4.0以后引入mvc开发模式,将js分成model-view-controller三层,使得大量js代码变得更加易于维护和重用,这就是ext.jsmvc ...
- Redis缓存机制一为什么要用Redis
1.持久化数据库的缺点 1)存储在部署数据库的硬盘上 平时我们使用的关系型数据库有MySql,Oracle以及SqlServer等,通常通过数据驱动来链接数据库进行增删改查. 那么 ...
- Sql server 2016 Always On 搭建Windows集群配置
.安装WSFC群集组件 1)打开服务器管理器,选择“功能”,在右边窗口中点击“添加功能”. 2)在添加功能向导中,勾选“故障转移群集”,点击“下一步”. 3)在“确认安装选择”页面中,点击“安装”,进 ...
- 香港低价linux虚拟主机,
https://www.sugarhosts.com/zh-cn/hosting/shared-web-hosting Shared Baby 36 个月 ¥ 26.99 19 99 · / 月 续费 ...
- PHP 注册错误和异常处理机制
注册错误和异常处理机制有三个PHP函数需要学习 1. register_shutdown_function('Bootstrap\Library\Frame::fatalError'); 2. set ...
- Java 基础 引用数据类型 和 流程控制
引用数据类型 与定义基本数据类型变量不同,引用数据类型的变量定义及复制有一个相对固定的步骤和格式: 数据类型 变量名 = new 数据类型(); 如:String st = new String(); ...
- Python 初始函数
python之路——初识函数 阅读目录 为什么要用函数 函数的定义与调用 函数的返回值 函数的参数 本章小结 为什么要用函数 我们就想啊,要是我们能像使用len一样使用我们这一大段“计算长度”的代 ...
- IIS预编译提升加载速度
当我们把网站部署在IIS7或IIS6S的时候,每当IIS或是ApplicationPool重启后,第一次请求网站反应总是很慢,原因大家都知道(不知道可以参考这个动画说明ASP.NET网页第一个Requ ...
- 从零开始一起学习SLAM | 为什么要用齐次坐标?
在涉及到计算机视觉的几何问题中,我们经常看到齐次坐标这个术语.本文介绍一下究竟为什么要用齐次坐标?使用齐次坐标到底有什么好处? 什么是齐次坐标?简单的说:齐次坐标就是在原有坐标上加上一个维度: 使用齐 ...