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='t1' -hiveconf var_rows=10 -f test.sql
[root]$hive -define tablename='t1' -hiveconf var_rows=10 -f test.sql
[root]$hive -d tablename='t1' -hiveconf var_rows=10 -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与hivevar区别以及其作用域

转载于:https://www.cnblogs.com/shujuxiong/p/10265800.html

Hive中变量的使用相关推荐

  1. [转载]sql(hive)中变量的使用

    文章来源:https://zhuanlan.zhihu.com/p/89062863 我们在学 Python 或者其他编程语言的时候都应该有学过变量这么一个东西,可是 Sql 这种查询语言中怎么也有变 ...

  2. hive中如何读取数组_hive解析json嵌套数组

    hive怎么统计json中某一项的内容 Hive提供json抽取函数get_json_object,根据json_path来获取你所抽取的项 get_json_object函数第一个参数填写json对 ...

  3. Hive 05_hive变量、动态分区

    hive 参数.变量     --hive当中的参数.变量,都是以命名空间开头     --通过${}方式进行引用,其中system.env下的变量必须以前缀开头 hive 参数设置方式 --1.修改 ...

  4. python读取oracle数据到hvie parquet_关于sparksql操作hive,读取本地csv文件并以parquet的形式装入hive中...

    说明:spark版本:2.2.0 hive版本:1.2.1 需求: 有本地csv格式的一个文件,格式为${当天日期}visit.txt,例如20180707visit.txt,现在需要将其通过spar ...

  5. hive中如何把13位转化为时间_重要知识点收藏 | Hive常用函数大全

    关系运算 1.等值比较: = 语法:A=B 操作类型:所有基本类型 描述: 如果表达式A与表达式B相等,则为TRUE:否则为FALSE 举例: hive>select 1 from lxw_du ...

  6. hive中实现行转列_漫谈数据仓库之拉链表(原理、设计以及在Hive中的实现)

    全文由下面几个部分组成: 先分享一下拉链表的用途.什么是拉链表. 通过一些小的使用场景来对拉链表做近一步的阐释,以及拉链表和常用的切片表的区别. 举一个具体的应用场景,来设计并实现一份拉链表,最后并通 ...

  7. 【华为云技术分享】使用sqoop导入mysql数据到hive中

    Sqoop 是一个数据转储工具,它能够将 hadoop HDFS 中的数据转储到关系型数据库中,也能将关系型数据库中的数据转储到 HDFS 中. Apache Sqoop,是"SQL to ...

  8. 【clickhouse】使用waterdrop将Hive中的数据导入ClickHouse

    1.概述 转载:使用waterdrop将Hive中的数据导入ClickHouse 这里仅仅自己学习用. 前言 最近有一个需求需要把hive的数据同步到clickhouse,而且数据量还比较大,所以使用 ...

  9. hive 元数据 自定义_如何在Hive中创建自定义函数UDF及如何直接通过Impala的同步元数据重用UDF的jar文件-阿里云开发者社区...

    如何在Hive中创建自定义函数UDF及使用 如何在Impala中使用Hive的自定义函数 UDF函数开发 使用Intellij工具开发Hive的UDF函数,进行编译: 1.使用Intellij工具通过 ...

  10. hive中创建表失败

    使用create table命令创建表失败,如下错误信息: hive> create table test(id int,name string,age int,sex string); FAI ...

最新文章

  1. 在进行正式托管之前,服务器托管用户需要做哪些准备?
  2. [工具]-文件明文导出工具
  3. 佳能2900打印机与win10不兼容_佳能2900打印机和惠普1020哪种好 佳能2900打印机和惠普1020对比【详解】...
  4. Python学习笔记----基础篇10----模块2
  5. c语言字符马图案,C语言实现马踏棋盘
  6. 计算机专业教学实施,中职计算机专业教学项目的设计与实施
  7. jmeter压力测试指标解释
  8. html5字体加粗斜体,font设置字体加粗
  9. 安卓检测root代码
  10. javafx 五、网络请求
  11. jersey tomcat MySQL_基于jersey和Apache Tomcat构建Restful Web服务(一)
  12. raft协议对网络分区的处理
  13. 如何搬运短视频,从快手搬运视频图文教程攻略
  14. Vue app.js文件过大,带宽占用过大,优化方案(持续优化)
  15. 计算机视觉方向简介 | 机器视觉检测技术
  16. apex数据中心怎么切换服务器,Apex英雄怎么切换服务器
  17. 3S基础知识:VC6.0+MapX编程总结
  18. 为什么 128 KB 的魂斗罗可以实现那么长的剧情?
  19. 九、软考·系统架构师——系统架构质量及评估
  20. java操作txt文本(二):删除文本括号内的内容

热门文章

  1. 古体字与简体字对照表_简体字和繁体字对照表
  2. C语言实现扫雷游戏完整代码
  3. linux cat命令查找文件内容
  4. redis读缓存超时故障处理
  5. word中插入分割线
  6. JAVA SE 003——数值
  7. iOS 项目中添加字体库
  8. 程序员年薪45万,国企年薪20万,该不该跳槽去国企?
  9. Python之统计英文字符的个数
  10. matlab矩阵对角线上下加减,matlab – 如何在相关矩阵中移动靠近矩阵对角线的较大值...