Hive常⽤交互命令与属性配置

2023-11-15


Hive常⽤交互命令与变量属性

一、Hive常用交互命令

1.启动集群

image-20230401082910069

2.查看帮助

image-20230401082756994

3.使用参数

1)在Hive命令行里创建一个表student,并插入1条数据
create table student(id int,name string);
insert into table student values(1,"zhangsan");
select * from student;

image-20230401084208173

image-20230401084223964

image-20230401084238137

2)打开hive命令⾏窗⼝时定义变量
hive --define foo=bar
或者
hive -d foo=bar
或者
hive --hivevar foo=bar

–defifine key=value和–hivevar key=value是等价的。⼆者都是让⽤户在命令⾏定义⾃定义变量以便在Hive脚本中使⽤。

当⽤户使⽤这个功能时,hive会将这些键值对放到hivevar命名空间,以便和其他3种内置命名空间(hiveconf、system、env)进⾏区分。

image-20230401090123385

3)打开verbose模式

verbose模式会在命令⾏窗⼝中显示要执⾏的sql语句

hive --verbose

image-20230401090746991

4)“-e”不进入hive的交互窗口执行hql语句
hive -e "select id from student;"

image-20230401084402944

5)“-f”执行脚本中的hql语句

(1)在$HIVE_HOME/下创建datas目录并在datas目录下创建hivef.sql文件

image-20230401084612905

image-20230401084822334

(2)文件中写入正确的hql语句

select * from student;

(3)执行文件中的hql语句

hive -f $HIVE_HOME/datas/hivef.sql

image-20230401085007400

(4)执行文件中的hql语句并将结果写入文件中

hive -f $HIVE_HOME/datas/hivef.sql  > $HIVE_HOME/datas/hive_result.txt

image-20230401085138332

image-20230401085234849

6)指定⼀个⽂件,当 CLI 启动时,在命令提示符出现前会先执⾏这个⽂件
hive -i init.hql
7)查看在 hive 中输⼊的所有历史命令

进⼊到当前⽤户的根⽬录 /root 或/home/hive

image-20230401091512739

image-20230401091428924

查看. hivehistory ⽂件

image-20230401091627948

image-20230401091602547

8)退出Hive命令⾏窗⼝
hive (default)> quit;
hive (default)> exit;
9)在Hive内使⽤Hadoop的dfs命令
dfs -ls /;

image-20230401092520939

10)Hive脚本中如如何进⾏注释

在Hive脚本中⽤户可以使⽤发–开头的字符串来表示注释,例如:

image-20230401092720431

11)执⾏Shell命令

⽤户不需要退出Hive CLI就可以执⾏简单的bash shell命令。只要在命令前加上!并且以分号(;)结尾就可以。

image-20230401093016405

在可视化工具中不能执行。

二、Hive变量和属性

Hive变量是以Java字符串的形式存储的,⽤户可以在查询中引⽤变量。Hive会先使⽤变量值替换掉查询的变量引⽤,然后才会将查询语句提交给查询处理器。

Hive中使⽤的变量和属性是放在不同的命令空间中,以便于区分。下表给出了Hive中使⽤的4种命名空间。

命名空间 使⽤权限 描述
hivevar 可读/可写 ⽤户⾃定义变量
hiveconf 可读/可写 Hive相关的配置属性
system 可读/可写 Java定义的配置属性
env 只读 Shell环境(例如bash)定义的环境变量

注:变量和属性是在不同上下⽂中使⽤的术语,在⼤多数情况下它们的功能是⼀样的。

1. hivevar

hivevar空间中定义的变量⽤于传参数 ,专⻔提供给⽤户⾃定义变量。在CLI中,可以使⽤set命令显示或者修改变量值。

下例显示env空间中HOME变量的值

image-20230401093701897

直接使⽤set命令会打印出命令空间hivevar、hiveconf、system和env中所有的变量。使⽤set -v命令还会打印Hadoop中所定义的所有属性。

set命令还可⽤于给变量赋值。

# hive -d foo=bar

hive (default)> set foo;
foo=bar

hive (default)> set hivevar:foo;
hivevar:foo=bar

hive (default)> set hivevar:foo=bar2;

hive (default)> set foo;
foo=bar2

hive (default)> set hivevar:foo;
hivevar:foo=bar2

hivevar:是可选的,代表⽤户⾃定义变量的命名空间。

在CLI的查询语句中的变量引⽤会先被替换为具体的值,然后才会提交给查询处理器。例如:

--启动hive命令行并定义变量foo
hive -d foo=bar
--创建表book并使用了变量foo
hive (default)> create table book(id int, ${hivevar:foo} string);
--查看创建的表book
hive (default)> describe book;
OK
col_name data_type comment
id                 int
bar                string
Time taken: 0.311 seconds, Fetched: 2 row(s)
--删除表book
hive (default)> drop table book;
--创建表book去掉hivevar:前缀
hive (default)> create table book(id int, ${foo} string);
--查看表结构发现,加不加hivevar:前缀表结构是一样的
hive (default)> describe book;
OK
col_name data_type comment
id					int
bar					string
Time taken: 0.311 seconds, Fetched: 2 row(s)

注意:变量名不能使⽤hive的保留关键字,否则会出现解析错误。

2. hiveconf

hiveconf空间中定义的变量⽤于配置Hive⾏为的所有属性,包括了hive-site.xml中配置的hive全局变量。

开启hive.cli.print.current.db属性,这个属性可以在CLI提示符前打印出当前所在数据库名,默认的数据库名为default。这个属性的默认值为false。

# hive --hiveconf hive.cli.print.current.db=true
hive (default)> set hive.cli.print.current.db;
hive.cli.print.current.db=true

hive (default)> set hiveconf:hive.cli.print.current.db=false;
hive> set hive.cli.print.current.db;
hive.cli.print.current.db=false

3. system和env

Java系统属性对system命名空间内容具有可读写权利,⽽env命令空间,对于环境变量只提供可读权限。注意和hivevar变量不同,⽤户必须使⽤system:或者env:前缀来指定系统属性和环境变量。

4. 总结

hive属性有3种配置⽅式,分别可以在hive-site.xml中配置、命令⾏参数中配置、SET设定参数配置,上述三种设定⽅式的优先级依次递增。即配置⽂件<命令⾏参数<参数声明。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Hive常⽤交互命令与属性配置 的相关文章

随机推荐

  • Java中的“static“关键字

    写在前面 前阵子看到一篇有关于Java中static的使用和介绍 讲的比较全面 近几日忽然想起早先工作碰到的有关static的相关问题 自己也总结一下吧 static是我们项目中经常用到的关键字 也是Java中非常重要的一个关键字 stat
  • 单片机多任务程序的框架

    下面说的单片机也主要是51与台系芯片 也就是现在的工作 其它应用不在讨论范围 才识有限 也敬请前辈们勘误 指教 一个真正意义的单片机系统肯定会是多任务的 怎样建立一个多任务程序的框架 1 前后台系统 前台是中断程序 后台是执行主程序 当中断
  • java 图书馆管理系统(超低配版)

    目录 图书管理系统要求 思路 show 方法 add 方法 search方法 delete 方法 代码 接口 Book类 Reader类 User类 Informatica类 BookList类 ReaderList类 UserList类
  • 借助py2neo将csv文件导入neo4j

    下载安装建议 戳我 启动neo4j 安装好之后以管理员权限启动 cmd 输入 neo4j bat console 启动 neo4j 在浏览器端可以打开 http localhost 7474 则说明启动成功 关于py2neo 先来了解些 p
  • this指针概念

    c 中成员变量和成员函数是分开存储的 每一个非静态成员函数只会诞生一份函数实例 也就是说多个同类型的对象会共用一块代码 那么问题是 这一块代码是如何区分哪个对象调用自己呢 c 通过特殊的对象指针 this指针 解决上述问题 this指针指向
  • 数组判断任意出现的重复值

    1 题目背景 给你一个整数数组nums 如果任一值在数组中出现至少两次 返回true 如果数组中每个元素互不相同 返回false 2 代码实现 public class Solution public static void main St
  • socat开放端口&&net命令&&sc命令

    socat socat是一个多功能的网络工具 名字来源于SOcket CAT 是netcat的增强版 扩展了设计 并有新的实现 工具下载地址 http www dest unreach org socat 演示如何开放端口 1 如下所示 开
  • Java动态执行代码字符串

    1 步骤 假如我们需要动态执行一段字符串形式的java代码 大概需要这样几步 生成文件 具体的文件 内存中的文件 调用javac编译 通过反射执行 2 生成文件 确定字符串的形式 字符串已经是完整的 java形式 那么就不再需要再做操作 写
  • 尼克劳斯·沃斯奖 (Niklaus Wirth Award) Pascal最具价值贡献者奖Marco Cantú获奖感言:关于Pascal和Delphi历史的个人观点

    这是一篇很长的博客文章 其中包含我在萨拉曼卡国际Pascal帕斯卡大会上发表的演讲 这是一部Pascal的历史 但是是从非常个人的角度来看的 在开始演讲之前 我要感谢国际Pascal大会的组织者 特别是塞尔吉奥 他们为举办这次活动付出了巨大
  • QT图片叠加CompositionMode效果一览

    QPixmap tmpPix pix size tmpPix fill Qt transparent QPainter p1 tmpPix p1 setCompositionMode QPainter CompositionMode Sou
  • C++操作Redis的简单例子

    相信做过服务端开发的应该都知道Redis的大名 它是一个开源的使用ANSI C语言编写 支持网络 可基于内存亦可持久化的日志型 Key Value数据库 我们后台是用C 开发的 问了下他们 用的缓存框架有Redis SSDB 今天看了几个帖
  • linux kill掉其他的登录用户

    为什么80 的码农都做不了架构师 gt gt gt 我们在LINUX下可以使用多个用户在不同地方连接上LINUX服务器 这样也出现一个问题就是会有多个用户登陆到服务器上了 在系统中我们可以使用命令who 或者w 来查看当前有多少个用户登陆了
  • 华为云云耀云服务器 L 实例评测|配置教程 + 用 Python 简单绘图

    文章目录 Part I Introduction Chap I 云耀云服务器 L 实例简介 Chap II 参与活动步骤 Part II 配置 Chap I 初步配置 Chap II 配置安全组 Part III 简单使用 Chap I V
  • 快速入门 Logback

    简介 Logback 旨在作为流行的 log4j 项目的继承者 它是由 log4j 创始人 Ceki Gulcu 设计的 同时它也是 SpingBoot 项目的默认日志框架 安装 因为 logback 需要和 slf4j 一起使用 所以总共
  • react antv g2 图表更新踩坑记录

    记录一下 antv g2 踩的坑 1 声明一个chart let charts useRef 2 通过调接口获取数据源 3 判断是否第一次获取数据源 if 是否第一次获取数据源 enterpriseColumn res data else
  • 踩坑,发现一个ShardingJdbc读写分离的BUG

    前言 最近公司准备接入ShardingJdbc做读写分离了 老大让我们理一理有没有写完数据立马读的场景 因为主从同步是有延迟的 如果写完读取数据走到从库 而从库正好有延迟 没读取到数据 岂不是造成了生产事故 今天我们来看看 Sharding
  • Shell中正则表达式

    1 正则表达式介绍 1 正则表达式 通常用于判断语句中 用来检查某一字符串是否满足某一格式 2 正则表达式是由普通字符与元字符组成 3 普通字符包括大小写字母 数字 标点符号及一些其他符号 4 元字符是指在正则表达式中具有特殊意义的专用字符
  • 参加电子大赛的经验总结,希望对在校大学生有所帮助

    参加电子大赛的经验总结 赵亮 大连理工大学 0 简介 我是大连理工大学03级的学生 参加了05年9月份举办的全国大学生电子设计大赛 最终我们队获得了辽宁省特等奖 全国二等奖的成绩 全国大学生电子设计大赛每两年举办一次 为全国各高校本科生电子
  • osgEarth的Rex引擎原理分析(一零九)19级瓦片分辨率估算

    目标 一零八 中的问题194 rex的瓦片分级为0 1 19 第0级角度分辨率 180 第1级角度分辨率 180 2 第19级角度分辨率 180 2 19 0 00034332275390625 每个瓦片默认像素为256 256 则每个像素
  • Hive常⽤交互命令与属性配置

    文章目录 Hive常 交互命令与变量属性 一 Hive常用交互命令 1 启动集群 2 查看帮助 3 使用参数 1 在Hive命令行里创建一个表student 并插入1条数据 2 打开hive命令 窗 时定义变量 3 打开verbose模式