Hive用户中文使用手册系列(二)

命令和 CLI

语言手册命令

命令是 non-SQL statements,例如设置 property 或添加资源。它们可以在 HiveQL 脚本中使用,也可以直接在CLI或Beeline中使用。

命令描述
退出使用 quit 或 exit 退出交互式 shell。
重启将 configuration 重置为默认值(从 Hive 0.10 开始:请参阅HIVE-3202)。使用 hive 命令行中的 set 命令或-hiveconf 参数设置的任何 configuration 参数都将重置为默认值 value。请注意,这不适用于使用 key name 的“hiveconf:”前缀在 set 命令中设置的 configuration 参数(出于历史原因)。
设置<‘key‘> = <‘value‘>设置特定 configuration 变量(key)的 value。
打印由用户或 Hive 覆盖的 configuration 变量列表。
设置-v打印所有 Hadoop 和 Hive configuration 变量。

Sample 用法:

hive> set mapred.reduce.tasks=32;hive> set;hive> select a.* from tab1;hive> !ls;hive> dfs -ls;

Hive CLI

$HIVE_HOME/bin/hive 是一个 shell 实用程序,可用于以交互方式或批处理方式 run Hive 查询。

有利于 Beeline CLI 的弃用

HiveServer2(在 Hive 0.11 中引入)有自己的名为Beeline的 CLI,它是一个基于 SQLLine 的 JDBC client。由于新开发的重点是 HiveServer2,Hive CLI 很快就会被弃用支持 Beeline(HIVE-10511)。
请参阅 HiveServer2 文档中的使用 Beeline 替换 Hive CLI 的 Implementation和Beeline - 新命令 Line Shell。

Hive 命令 Line 选项

要获得帮助,请 run“hive -H”或“hive --help”。
用法(在 Hive 0.9.0 中):

usage: hive-d,--define <key=value>          Variable substitution to apply to Hivecommands. e.g. -d A=B or --define A=B-e <quoted-query-string>         SQL from command line-f <filename>                    SQL from files-H,--help                        Print help information-h <hostname>                    Connecting to Hive Server on remote host--hiveconf <property=value>   Use value for given property--hivevar <key=value>         Variable substitution to apply to hivecommands. e.g. --hivevar A=B-i <filename>                    Initialization SQL file-p <port>                        Connecting to Hive Server on port number-S,--silent                      Silent mode in interactive shell-v,--verbose                     Verbose mode (echo executed SQL to theconsole)

版本信息
从 Hive 0.10.0 开始,还有一个额外的命令 line 选项:

--database <dbname>      Specify the database to use

注意:支持变体“-hiveconf”以及“–hiveconf”。

例子

有关使用hiveconf选项的示例,请参阅可变替代。

  • 从命令 line 运行查询的示例
$HIVE_HOME/bin/hive -e 'select a.col from tab1 a'
  • 设置 Hive configuration 变量的示例
$HIVE_HOME/bin/hive -e 'select a.col from tab1 a' --hiveconf hive.exec.scratchdir=/home/my/hive_scratch  --hiveconf mapred.reduce.tasks=32
  • 使用静默模式将数据从查询转储到文件中的示例
$HIVE_HOME/bin/hive -S -e 'select a.col from tab1 a' > a.txt
  • 从本地磁盘运行脚本 non-interactively 的示例
$HIVE_HOME/bin/hive -f /home/my/hive-script.sql
  • 从 Hadoop 支持的文件系统中运行脚本 non-interactively 的示例(从Hive 0.14开始)
$HIVE_HOME/bin/hive -f hdfs://<namenode>:<port>/hive-script.sql
$HIVE_HOME/bin/hive -f s3://mys3bucket/s3-script.sql
  • 在进入交互模式之前 running 初始化脚本的示例
$HIVE_HOME/bin/hive -i /home/my/hive-init.sql
hiverc 文件

在没有-i选项的情况下调用 CLI 将尝试加载 H I V E H O M E / b i n / . h i v e r c 和 HIVE_HOME/bin/.hiverc 和 HIVEHOME/bin/.hivercHOME/.hiverc 作为初始化 files。

Logging

Hive 使用 log4j 进行 logging。默认情况下,这些日志不会发送到标准输出,而是捕获到 Hive 的 log4j properties 文件指定的 log 文件中。默认情况下,Hive 将在 Hive 安装的conf/目录中使用hive-log4j.default,该目录将日志写入/tmp//hive.log并使用WARN level。
通常需要将日志发送到标准输出 and/or 更改 logging level 以进行调试。这些可以通过命令 line 完成,如下所示:

$HIVE_HOME/bin/hive --hiveconf hive.root.logger=INFO,console

hive.root.logger指定 logging level 以及 log 目标。将console指定为目标会将日志发送到标准错误(而不是 log 文件)。

清除悬空划痕目录的工具

有关临时目录的信息,请参阅设置 HiveServer2 中的Scratch Directory Management,以及可以在 Hive CLI 和 HiveServer2 中使用的 command-line 用于删除悬空临时目录的工具。

Hive 批处理模式命令

当$HIVE_HOME/bin/hive与-e或-f选项一起运行时,它以批处理模式执行 SQL 命令。

  • hive -e ''执行查询 string。
  • hive -f 从文件执行一个或多个 SQL 查询。
    Version 0.14
    从 Hive 0.14 开始,可以来自 Hadoop 支持的文件系统之一(HDFS,S3,etc.))。
$HIVE_HOME/bin/hive -f hdfs://<namenode>:<port>/hive-script.sql $HIVE_HOME/bin/hive -f s3://mys3bucket/s3-script.sql
Hive Interactive Shell 命令

当$HIVE_HOME/bin/hive在没有-e或-f选项的情况下运行时,它将进入交互式 shell 模式。
使用 ”;” (分号)终止命令。可以使用“ - ”前缀指定脚本中的注释。
Sample 用法:

hive> set mapred.reduce.tasks=32;hive> set;hive> select a.* from tab1;hive> !ls;hive> dfs -ls;
Hive 资源

Hive 可以管理向 session 添加资源,其中这些资源需要在查询执行 time 时提供。资源可以是 files,jars 或 archives。可以将任何本地可访问的文件添加到 session。
将资源添加到 session 后,Hive 查询可以通过其 name(在 map/reduce/transform 子句中)引用它,并且资源在整个 Hadoop cluster 上的执行 time 时在本地可用。 Hive 使用 Hadoop 的分布式缓存在查询执行 time 时将添加的资源分发到 cluster 中的所有计算机。
用法:

ADD { FILE[S] | JAR[S] | ARCHIVE[S] } <filepath1> [<filepath2>]*LIST { FILE[S] | JAR[S] | ARCHIVE[S] } [<filepath1> <filepath2> ..]DELETE { FILE[S] | JAR[S] | ARCHIVE[S] } [<filepath1> <filepath2> ..]
  • FILE 资源只是添加到分布式缓存中。通常,这可能类似于要执行的转换脚本。
  • JAR 资源也被添加到 Java classpath 中。这在 reference objects 中是必需的,它们包含诸如 UDF 之类的对象。有关自定义 UDF 的更多信息,请参见Hive 插件。
  • ARCHIVE 资源会自动取消归档,作为分发它们的一部分。
    例:
hive> add FILE /tmp/tt.py;hive> list FILES;/tmp/tt.pyhive> select from networks a MAP a.networkid USING 'python tt.py' as nn where a.ds = '2009-01-04' limit 10;

Version 1.2.0
从Hive 1.2.0开始,可以使用 ivy://group:module:version 形式的常春藤 URL 添加和删除资源? querystring。

  • group - 模块来自哪个模块 group。直接转换为 Maven groupId 或 Ivy Organization。
  • module - 要加载的模块的 name。直接转换为 Maven artifactId 或 Ivy artifact。
  • version - 要使用的模块的 version。可以使用任何 version 或*(最新)或 Ivy 范围。
    可以在 querystring 中传递各种参数,以配置如何以及将哪些 jars 添加到工件中。参数采用 key value 对的形式,由’&'分隔。
    用法:
ADD { FILE[S] | JAR[S] | ARCHIVE[S] } <ivy://org:module:version?key=value&key=value&...> <ivy://org:module:version?key=value&key1=value1&...>*
DELETE { FILE[S] | JAR[S] | ARCHIVE[S] } <ivy://org:module:version> <ivy://org:module:version>*

此外,我们可以在相同的 ADD 和 DELETE 命令中混合使用和。

ADD { FILE[S] | JAR[S] | ARCHIVE[S] } { <ivyurl> | <filepath> } <ivyurl>* <filepath>* 
DELETE { FILE[S] | JAR[S] | ARCHIVE[S] } { <ivyurl> | <filepath> } <ivyurl>* <filepath>*

可以传递的不同参数是:

  • exclude:以 org:module 形式使用逗号分隔的 value。
  • transitive:取值 true 或 false。默认为 true。当 transitive = true 时,将下载所有传递依赖项并将其添加到 classpath。
  • ext:要添加的文件的扩展名。 'jar’默认情况下。
  • 分类器:要解析的 maven 分类器。
    例子:
hive>ADD JAR ivy://org.apache.pig:pig:0.10.0?exclude=org.apache.hadoop:avro;
hive>ADD JAR ivy://org.apache.pig:pig:0.10.0?exclude=org.apache.hadoop:avro&transitive=false;

除非某些依赖项由其他资源共享,否则 DELETE 命令将删除资源及其所有传递依赖项。如果两个资源共享一组传递依赖项,并且使用 DELETE 语法删除其中一个资源,则除了共享的资源外,将删除资源的所有传递依赖项。
例子:

hive>ADD JAR ivy://org.apache.pig:pig:0.10.0
hive>ADD JAR ivy://org.apache.pig:pig:0.11.1.15
hive>DELETE JAR ivy://org.apache.pig:pig:0.10.0

如果 A 是包含 pig-0.10.0 的传递依赖性的集合,并且 B 是包含 pig-0.11.1.15 的传递依赖性的集合,则在执行上述命令之后,将删除 A-(A 交集 B)。
有关详细信息,请参阅HIVE-9664。
如果转换脚本中使用的 files 已经在 Hadoop cluster 中使用相同路径 name 的所有计算机上可用,则不必将 files 添加到 session。例如:

  • … MAP a.networkid USING ‘wc -l’ …
    这里wc是所有机器上都可用的可执行文件。
  • … MAP a.networkid USING ‘/home/nfsserv1/hadoopscripts/tt.py’ …
    这里tt.py可以通过在所有 cluster 节点上配置相同的 NFS 挂载点访问。
    请注意,Hive configuration 参数还可以指定 jars,files 和 archives。有关更多信息,请参见Configuration 变量。
HCatalog CLI

HCatalog 随 Hive 一起安装,从 Hive release 0.11.0 开始。
许多(但不是全部)hcat命令可以作为hive命令发出,反之亦然。有关详细信息,请参阅HCatalog 手册中的 HCatalog 命令 Line 接口文档。

Beeline - 命令 Line Shell

此页面描述了HiveServer2支持的不同 clients。 HiveServer2 的其他文档包括:

  • HiveServer2 概述
  • 设置 HiveServer2
  • Hive Configuration Properties:HiveServer2

    在 Hive version 0.11 中引入。见HIVE-2935。

Beeline - 命令 Line Shell

HiveServer2 支持与 HiveServer2 一起使用的命令 shell Beeline。它是一个基于 SQLLine CLI(http://sqlline.sourceforge.net/)的 JDBC client。 SQLLine 的详细文件也适用于 Beeline。
使用 Beeline 替换 Hive CLI 的 Implementation
Beeline shell 既可以在嵌入模式下工作,也可以在 remote 模式下工作。在嵌入模式下,它运行嵌入式 Hive(类似于Hive CLI),而 remote 模式用于连接到 Thrift 上的单独 HiveServer2 process。从Hive 0.14开始,当 Beeline 与 HiveServer2 一起使用时,它还会从 HiveServer2 打印 log 消息,以查询它对 STDERR 执行的查询。 Remote HiveServer2 模式建议用于 production 使用,因为它更安全,不需要为用户授予直接的 HDFS/metastore 访问权限。
在 remote 模式下,HiveServer2 只接受有效的 Thrift calls - 即使在 HTTP 模式下,消息体也包含 Thrift 有效负载。

Beeline示例
% bin/beeline 
Hive version 0.11.0-SNAPSHOT by Apache
beeline> !connect jdbc:hive2://localhost:10000 scott tiger
!connect jdbc:hive2://localhost:10000 scott tiger 
Connecting to jdbc:hive2://localhost:10000
Connected to: Hive (version 0.10.0)
Driver: Hive (version 0.10.0-SNAPSHOT)
Transaction isolation: TRANSACTION_REPEATABLE_READ
0: jdbc:hive2://localhost:10000> show tables;
show tables;
+-------------------+
|     tab_name      |
+-------------------+
| primitives        |
| src               |
| src1              |
| src_json          |
| src_sequencefile  |
| src_thrift        |
| srcbucket         |
| srcbucket2        |
| srcpart           |
+-------------------+
9 rows selected (1.079 seconds)

您还可以在命令 line 上指定连接参数。这意味着您可以从 UNIX shell 历史记录中找到带有连接 string 的命令。

% beeline -u jdbc:hive2://localhost:10000/default -n scott -w password_file
Hive version 0.11.0-SNAPSHOT by ApacheConnecting to jdbc:hive2://localhost:10000/default

Beeline与 NoSASL 连接
如果您想通过 NOSASL 模式进行连接,则必须明确指定身份验证模式:

% bin/beeline beeline> !connectjdbc:hive2://<host>:<port>/<db>;auth=noSasl hiveuser pass
HiveServer2 Logging

从 Hive 0.14.0 开始,HiveServer2 操作日志可用于 Beeline clients。这些参数配置 logging:

  • hive.server2.logging.operation.enabled
  • hive.server2.logging.operation.log.location
  • hive.server2.logging.operation.verbose(Hive 0.14 to 1.1)
  • hive.server2.logging.operation.level(Hive 1.2 向前)
    HIVE-11488(Hive 2.0.0)将 logging queryId 和 sessionId 的支持添加到 HiveServer2 log 文件中。要启用它,edit/add%X {。 435}和%X {。 436}到 logging configuration 文件的 pattern 格式 string。
取消查询

当用户在 Beeline shell 上输入CTRL+C时,如果有一个查询在同一 time 运行运行,则 Beeline 会在关闭与 HiveServer2 的 socket 连接时尝试取消查询。仅当hive.server2.close.session.on.disconnect设置为true时才会启用此行为。从 Hive 2.2.0(HIVE-15626)开始当用户输入CTRL+C时,当取消 running 查询时,Beeline 不会退出命令 line shell。如果用户希望退出 shell,则在取消查询时,可以在第二个 time 输入CTRL+C。但是,如果当前没有查询 running,则第一个CTRL+C将退出 Beeline shell。此行为类似于 Hive CLI 处理CTRL+C的方式。
!quit是退出 Beeline shell 的推荐命令。

终端脚本中的后台查询

可以使用 nohup 和 disown 等命令将 Beeline 与终端 run 断开连接以进行批处理和自动化脚本。
某些版本的 Beeline client 可能需要一种解决方法,允许 nohup 命令在不停止的情况下将 Beeline process 正确放入后台。见HIVE-11717,H IVE-6758。
可以更新以下环境变量:

export HADOOP_CLIENT_OPTS="$HADOOP_CLIENT_OPTS -Djline.terminal=jline.UnsupportedTerminal"

Running with nohangup(nohup)和&符号(&)将 process 放在后台并允许终端断开连接,同时保持 Beeline process running。

nohup beeline --silent=true --showHeader=true --outputformat=dsv -f query.hql </dev/null > /tmp/output.log 2> /tmp/error.log &

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/110376.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【STM32】--PZ6860L,STM32F4,ARM3.0开发板

一、ARM3.0开发板详细介绍 1.开发板整体介绍 &#xff08;1&#xff09;各种外设和主板原理图 &#xff08;2&#xff09;主板供电部分5V和3.3V兼容设计 注意跳线帽 2.STM32核心板介绍 3.核心板原理图 STM32和51的IO对应关系 下载电路 二、ARM3.0开发板ISP下载原理分析 1.I…

Go语言入门心法(六): HTTP面向客户端|服务端编程

Go语言入门心法(一): 基础语法 Go语言入门心法(二): 结构体 Go语言入门心法(三): 接口 Go语言入门心法(四): 异常体系 Go语言入门心法(五): 函数 一:go语言面向web编程认知 Go语言的最大优势在于并发与性能,其性能可以媲美C和C,并发在网络编程中更是至关重要 使用http发送请…

android开源投屏工具scrcpy简介

目录 一&#xff0c;初识scrcpy 1.1 scrcpy介绍 1.2 scrcpy特点 二&#xff0c;scrcpy指令说明 2.1 画面设置 2.1.1 缩小分辨率 2.1.2 修改画面比特率 2.1.3 限制画面帧率 2.1.4 画面裁剪 2.1.5 锁定屏幕朝向 2.2 屏幕录制 2.3 连接方式 2.3.1 无线 2.3.2 多设备…

Ai数字人直播系统SaaS源码大开源,源码独立部署助力中小企业发展!

源码独立部署ai数字人直播系统&#xff0c;如果放在上半年的话没有数百万投资几乎是天方夜谭&#xff0c;连想做个数字人代理商少则投资十万多则数十万才能进得了代理门槛。在此期间&#xff0c;数字人市场一度出现了大批不良企业利用网上下载的视频合成源码二次包装后打着数字…

5.MidBook项目经验之MongoDB,Nacos,网关

1.医院查询接口 //系统1(signsignMD5加密后) ----> 系统2(数据库signMD5加密 相对比),好处在于网络之间传输不会得到直接得到sign 2.上传和删除科室信息 //map转jsonString,然后再转为对象//保存需要查数据库是否存在,存在修改,不存在添加//接口的包引入不对导致调用引包错误…

三级分类部分三级目录无法加载,后端接口能在前端返回所有数据

项目场景&#xff1a; 实现ElementUI中三级分类的功能&#xff0c;发现没有前端三级目录的二级目录可以新建三级目录&#xff0c;数据库中也有数据&#xff0c;但是无法在前端显示&#xff01;后端的接口没有返回数据库的数据。 问题描述 提示&#xff1a;这里描述项目中遇到…

代码随想录算法训练营第五十七天| LeetCode 392 判断子序列、LeetCode 115 不同的子序列

1 LeetCode 392 判断子序列 题目链接&#xff1a;LeetCode 392 判断子序列 文章讲解&#xff1a;代码随想录(programmercarl.com) 视频讲解&#xff1a;动态规划&#xff0c;用相似思路解决复杂问题 | LeetCode&#xff1a;392.判断子序列 2 LeetCode 115 不同的子序列 题目链接…

群狼调研(长沙消费者满意度调查) | 参展观众满意度调查流程

进行参展观众满意度调查需要一个系统化的流程&#xff0c;以确保数据的收集和分析有效、可靠。群狼调研(长沙大学满意度调查)受顾客委托开展参展观众满意度调查&#xff0c;以下是进行参展观众满意度调查的一般流程&#xff1a; 1. 确定调查目标和目的&#xff1a; 明确为何进…

selenium多窗口、多iframe切换、alert、3种等待

1、多标签/多窗口之间的切换 场景&#xff1a; 在页面操作过程中有时候点击某个链接会弹出新的窗口&#xff0c;这时就需要切换到新打开的窗口上进行操作。这种情况下&#xff0c;需要识别多标签或窗口的情况。 操作方法&#xff1a; switch_to.window()方法&#xff1a;切换…

c 语言基础:L1-045 宇宙无敌大招呼

据说所有程序员学习的第一个程序都是在屏幕上输出一句“Hello World”&#xff0c;跟这个世界打个招呼。作为天梯赛中的程序员&#xff0c;你写的程序得高级一点&#xff0c;要能跟任意指定的星球打招呼。 输入格式&#xff1a; 输入在第一行给出一个星球的名字S&#xff0c;是…

【Eclipse】解决插件下载速度太慢

解决方案&#xff1a;修改镜像 下面列出几个国内的镜像网站&#xff1a; 中国科学技术大学(5.6MB/s) http://mirrors.ustc.edu.cn/eclipse/ 北京理工大学&#xff08;600KB/s&#xff09; http://mirror.bit.edu.cn/eclipse/ 大连东软信息学院(400KB/s) http://mirrors.neuso…

Dolphinscheduler的API接口问题

在使用java 调用dolphinscheduler的API接口时要注意的事项&#xff1a; 1&#xff1a;官方文档中写的是使用ui界面创建token&#xff0c;然后将token设置在header中&#xff0c;但是如果没有这个token怎么办&#xff1f;因为在一个陌生的环境中&#xff0c;一般没人会记这个to…

基于YOLOv8的多目标检测与自动标注软件【python源码+PyqtUI界面+exe文件】【深度学习】

基本功能演示 摘要&#xff1a;YOLOv8是YOLO系列最新的版本&#xff0c;支持多种视觉任务。本文基于YOLOv8的基础模型实现了80种类别的目标检测&#xff0c;可以对图片进行批量自动标注&#xff0c;并将检测结果保存为YOLO格式便于后续进行其他任务训练。本文给出完整的Python实…

八股文学习四(kafka)

一. 消息中间件kafka (1)基本概念 (2) 生产者 生产者将消息发送到topic中去&#xff0c;同时负责选择将message发送到topic的哪一个partition中。通过round-robin做简单的负载均衡。也可以根据消息中的某一个关键字来进行区分。通常第二种方式使用的更多。 (3)消费者 消费模…

【初识Linux】:常见指令(2)

朋友们、伙计们&#xff0c;我们又见面了&#xff0c;本期来给大家解读一下有关Linux的基础知识点&#xff0c;如果看完之后对你有一定的启发&#xff0c;那么请留下你的三连&#xff0c;祝大家心想事成&#xff01; C 语 言 专 栏&#xff1a;C语言&#xff1a;从入门到精通 数…

OceanBase自动安装部署演示环境demo

OceanBase自动安装部署 前提条件 官方给出硬件条件需要满足以下要求 本文操作系统为&#xff1a;Red Hat Enterprise Linux 8 64 位 下载链接&#xff1a;https://pan.baidu.com/s/1rZ39xJFhk0HdmC4wEJcxvg 提取码&#xff1a;c01x 下载并安装 all-in-one 安装包 执行如下…

防蓝光护眼灯有用吗?教你认识防蓝光护眼台灯

要不是亲眼所见&#xff0c;真的很难想象一个台灯用处如此大&#xff0c;护眼效果非常明显。说起来很久没有用过护眼灯具了&#xff0c;这次用过之后有着明显的反差&#xff0c;如果能给孩子用&#xff0c;那将大大保障了孩子的用眼、护眼问题。我自己是用来睡前看书的&#xf…

大数据 DataX 详细安装教程

目录 一、环境准备 二、安装部署 2.1 二进制安装 2.2 python 3 支持 三、Data X 初体验 3.1 配置示例 3.1.1. 生成配置模板 3.1.2 创建配置文件 3.1.3 运行 DataX 3.1.4 结果显示 3.2 动态传参 3.2.1. 动态传参的介绍 3.2.2. 动态传参的案例 3.3 迸发设置 …

RK3288 Android11 RTL8723DS WiFi 和 蓝牙Bluetooth 适配

目录 一、RTL8723DS WiFi 适配 --- 篇章1、原理图分析&#xff08;WiFi部分&#xff09;补充:RTL8723DS时钟输入源讲解 2、根据原理图修改设备树和编辑驱动文件3、实验验证4、RTL8723DS WIFI驱动参考文档和博客网站 二、RTL8723DS 蓝牙Bluetooth 适配 --- 篇章1、原理图分析&am…

温湿度监测技术又进化了,这个操作太牛了!

无论是在家庭、医疗、农业、制造业&#xff0c;还是在物流和食品行业&#xff0c;精确的温湿度监控对于确保安全、质量和效率都至关重要。 客户案例 医疗行业 在医疗行业&#xff0c;温湿度监控对于存储药品、生物样本和医疗设备至关重要。山东某医院引入了泛地缘科技推出的温湿…