Hive 变量定义与引用

news/2024/9/25 8:53:16/

文章目录

  • 1.背景
  • 2.Hive 变量命名空间
    • 查看变量
    • 设置变量
    • 引用变量
  • 参考文献

1.背景

在书写 Hive SQL 时,有时需要将重复出现的值从 SQL 分离出来,以变量的方式表示和引用。

设置变量和引用变量可以带来以下几个好处:

  1. 简化查询语句:在 SQL 查询中,经常需要使用一些常量或固定值,例如日期、路径等。如果直接在查询语句中写死这些值,会导致查询语句变得冗长且难以维护。通过定义变量并在查询中引用变量,可以使查询语句更加简洁和易读。

  2. 提高可维护性:通过定义变量,可以将常量和固定值抽象出来,使得查询语句更加易于维护和修改。如果需要修改常量或固定值,只需要修改变量的值即可,而不需要修改所有引用该常量或固定值的查询语句。

  3. 提高可重用性:通过定义变量,可以将常量和固定值封装为一个可重用的模块。例如,可以将一些常用的查询条件或参数定义为变量,并在多个查询中引用这些变量,从而避免重复编写相同的查询语句。

  4. 增强灵活性:通过使用变量,可以使查询语句更加灵活和可配置。例如,可以将一些参数定义为变量,并在运行时动态修改这些参数的值,从而使查询语句具有更高的适应性和可配置性。

总之,自定义变量和引用变量是一种良好的编程习惯,可以使查询语句更加简洁、易读、易于维护和重用,并提高查询语句的灵活性和可配置性。

2.Hive 变量命名空间

Hive 变量有四个命名空间 —— hiveconf、system、 env 和 hivevar。

命名空间权限描述
hiveconf读写Hive 相关配置属性
system读写Java 定义的配置属性
env只读Shell 环境定义的环境变量
hivevar读写用户自定义临时变量(Hive v0.8.0 及之后版本)

查看变量

(1)查看所有变量。

SET;-- 加上 -v 可以查看 HDFS 和 MapReduce 的环境变量信息
SET -v;

(2)查看指定变量。

SET varname;-- 查看自定义变量
-- 名字空间 hivevar 可加可不加
SET myvar;
SET hivevar:myvar;-- 查看 Hive 配置参数:用于限制每个节点上允许创建的动态分区的数量
-- 名字空间 hiveconf 可加可不加
SET hive.exec.max.dynamic.partitions.pernode;
SET hiveconf:hive.exec.max.dynamic.partitions.pernode;-- 查看 system 变量,必须指定名字空间
SET sytem:user.name;
-- 结果示例
sytem:user.name=hadoop-- 查看 env 变量,必须指定名字空间
SET env:HADOOP_HOME
-- 结果示例
env:HADOOP_HOME=/usr/local/service/hadoop

设置变量

设置变量时,如果不指定命名空间,缺省为 hiveconf。

(1)修改 Hive 配置参数。

-- 名字空间 hiveconf 可加可不加
SET hive.exec.max.dynamic.partitions.pernode=1000;
SET hiveconf:hive.exec.max.dynamic.partitions.pernode=1000;

(2)自定义变量。

Hive 中的自定义变量是会话级别的,即它们在会话结束后会被重置。

-- 必须加上 hivevar
SET hivevar:myvar='hello';

引用变量

(1)SQL 中引用自定义变量。

-- 可加可不加名字空间 hivevar
SELECT ${myvar};
SELECT ${hivevar:myvar};

SQL 中引用其他名字空间下的变量,好像会报错,比如 env 下的 Shell 环境变量,感兴趣的同学可以试一下。


参考文献

LanguageManual VariableSubstitution - Apache Hive


http://www.ppmy.cn/news/1464379.html

相关文章

设计模式——职责链(责任链)模式

目录 职责链模式 小俱求实习 结构图 实例 职责链模式优点 职责链模式缺点 使用场景 1.springmvc流程 ​2.mybatis的执行流程 3.spring的过滤器和拦截器 职责链模式 使多个对象都有机会处理请求,从而避免请求的发送者和接受者之间的耦合关系。将这个对象连成…

F. Longest Strike[双指针详解]

Longest Strike 题面翻译 给你一个长度为 n n n 的序列 a a a 和一个整数 k k k,你要求一个区间 [ l , r ] [l,r] [l,r] 满足: 对于任何整数 x ∈ [ l , r ] x∈[l,r] x∈[l,r], x x x 在 a a a 中的出现次数不少于 k k k 次。最大…

去掉macOS终端命令行前的(base)

macOS在安装了Anaconda(或miniconda)后,每次打开terminal都会默认打开名为base的虚拟环境。 默认不启动base conda config --set auto_activate_base false默认启动base conda config --set auto_activate_base true

JRT性能演示

演示视频 君生我未生,我生君已老,这里是java信创频道JRT,真信创-不糊弄。 基础架构决定上层建筑,和给有些品种的植物种植一样,品种不对,施肥浇水再多,也是不可能长成参天大树的。JRT吸收了各方…

前端 CSS 经典:filter 滤镜

前言:什么叫滤镜呢,就是把元素里的像素点通过一套算法转换成新的像素点,这就叫滤镜。而算法有 drop-shadow、blur、contrast、grayscale、hue-rotate 等。我们可以通过这些算法实现一些常见的 css 样式。 1. drop-shadow 图片阴影 可以用来…

基于Python实现 HR 分析(逻辑回归和基于树的机器学习)【500010104】

介绍 数据集说明 此数据集包含与员工有关的综合属性集合,从人口统计细节到与工作相关的因素。该分析的主要目的是预测员工流动率并辨别导致员工流失的潜在因素。 在这个数据集中,有14,999行,10列,以及这些变量:满意度…

鸿蒙开发接口图形图像:【WebGL】

WebGL WebGL提供图形绘制的能力,包括对当前绘制图形的位置、颜色等进行处理。 WebGL标准图形API,对应OpenGL ES 2.0特性集。 说明: 开发前请熟悉鸿蒙开发指导文档: gitee.com/li-shizhen-skin/harmony-os/blob/master/README.md…

AI重塑保险业未来:机器学习在风险评估、欺诈检测与客户服务中的深度应用

🧑 博主简介:阿里巴巴嵌入式技术专家,深耕嵌入式人工智能领域,具备多年的嵌入式硬件产品研发管理经验。 📒 博客介绍:分享嵌入式开发领域的相关知识、经验、思考和感悟,欢迎关注。提供嵌入式方向…