Hive用户中文使用手册系列(四)
Python Client
在github 上上可以使用 Python client 驱动程序。有关安装说明,请参阅设置 HiveServer2:Python Client 驱动程序。
Ruby Client
一个 Ruby client 驱动程序在https://github.com/forward3d/rbhive的 github 上可用。
与 SQuirrel SQL Client 集成
- 从SQuirrel SQL 网站下载,安装和启动 SQuirrel SQL Client。
- 选择’Drivers - > New Driver …'来注册与 HiveServer2 一起使用的 Hive 的 JDBC 驱动程序。
- 输入驱动程序 name 和 example URL:
Name: HiveExample URL: jdbc:hive2://localhost:10000/default
- 选择’Extra Class Path - > Add’,从本地 Hive 和 Hadoop 发行版中添加以下 jars。
HIVE_HOME/lib/hive-jdbc-*-standalone.jarHADOOP_HOME/share/hadoop/common/hadoop-common-*.jar
版本信息
Hive JDBC 独立 jars 用于 Hive 0.14.0 向前(HIVE-538);对于以前版本的 Hive,请改用HIVE_HOME/build/dist/lib/.jar。
hadoop-common jars 适用于 Hadoop 2.0;对于以前版本的 Hadoop,请改用HADOOP_HOME/hadoop--core.jar。
- 选择“列表驱动程序”。这将导致 SQuirrel 解析您的 jars for JDBC 驱动程序,可能需要几秒钟。从’Class Name’输入框中选择 Hive 驱动程序以使用 HiveServer2:
org.apache.hive.jdbc.HiveDriver
- 单击“确定”以完成驱动程序注册。
- 选择’别名 - >添加别名…'以创建 HiveServer2 实例的连接别名。
- 在“Name”输入框中为连接别名指定 name。
- 从’Driver’drop-down 中选择 Hive 驱动程序。
- 根据需要修改 example URL 以指向 HiveServer2 实例。
- 输入“User Name”和“Password”,然后单击“确定”以保存连接别名。
- 要连接到 HiveServer2,double-click Hive 别名并单击“连接”。
建立连接后,您将在 log console 中看到错误,并可能会收到驱动程序与 JDBC 3.0 兼容的警告。这些警报是由 JDBC 元数据 API 的 yet-to-be-implemented 部分引起的,可以安全地忽略。要测试连接,请在 console 中输入 SHOW TABLES,然后单击 run 图标。
另请注意,当查询为 running 时,对“取消”按钮的支持尚不可用。
与 SQL Developer 集成
使用 JDBC 连接可以使用 Oracle SQLDeveloper 集成。
https://community.hortonworks.com/articles/1887/connect-oracle-sql-developer-to-hive.html
Integration 与其他工具的高级 Features
在 HTTP 模式下支持 Cookie 重放
Version 1.2.0 以及之后
此选项从Hive 1.2.0开始可用。
HIVE-9709引入了对 JDBC 驱动程序的支持,以启用 cookie 重放。默认情况下会启用此功能,以便将传入的 cookies 发送回服务器进行身份验证。
启用时的 JDBC 连接 URL 应如下所示:
jdbc:hive2://<host>:<port>/<db>?transportMode=http;httpPath=<http_endpoint>;cookieAuth=true;cookieName=<cookie_name>
- cookieAuth 默认设置为true。
- cookieName:如果任何传入的 cookies’键匹配 cookieName 的 value,则 JDBC 驱动程序不会向服务器发送任何登录 credentials/Kerberos 票证。 client 只会将 cookie 单独发送回服务器进行身份验证。 cookieName 的默认 value 是 hive.server2.auth(这是 HiveServer2 cookie name)。
- 要关闭 cookie 重放,必须在 JDBC URL 中使用 cookieAuth=false。
- **重要说明:**作为HIVE-9709的一部分,我们将 Hive 的 Apache http-client 和 http-core 组件升级为 4.4. 为了避免 HttpComponents 的升级 version 与系统中可能存在的其他任何版本之间发生任何冲突(例如 Apache Hadoop 2.6 提供的@这样一种方式 Beeline-related jars 出现在 HADOOP lib jars 之前。这是通过在使用 hive-jdbc 之前设置 HADOOP_USERCLASSPATH_FIRST=true 来实现的。事实上,在 bin/beeline.sh 我们这样做!
在 HTTP 模式下使用 2-way SSL
Version 1.2.0 以及之后
此选项从Hive 1.2.0开始可用。
HIVE-10447使 JDBC 驱动程序在 HTTP 模式下支持 2-way SSL。请注意,HiveServer2 目前不支持 2-way SSL。因此,当有一个像 Knox 这样的中间服务器需要 client 来支持 2-way SSL 时,这个 feature 很方便。
JDBC 连接 URL:
jdbc:hive2://<host>:<port>/<db>;ssl=true;twoWay=true; sslTrustStore=<trust_store_path>;trustStorePassword=<trust_store_password>;sslKeyStore=<key_store_path>;keyStorePassword=<key_store_password> ?transportMode=http;httpPath=<http_endpoint>
- < truststore_path >是 client 的信任库文件所在的路径。这是一个强制的 non-empty 字段。
- < 1 >是访问信任库的密码。
- < keystore_path >是 client 的密钥库文件所在的路径。这是一个强制的 non-empty 字段。
- < 1 >是访问密钥库的密码。
对于早于 0.14 的版本,请参阅上面的version 注意。
通过 JDBC 驱动程序传递 HTTP 标头 Key/Value 对
Version 1.2.0 以及之后
此选项从Hive 1.2.0开始可用。
HIVE-10339为 clients 引入了一个选项,以提供可以发送到底层服务器的自定义 HTTP headers(Hive 1.2.0 及更高版本)。
JDBC 连接 URL:
jdbc:hive2://<host>:<port>/<db>;transportMode=http;httpPath=<http_endpoint>;http.header.<name1>=<value1>;http.header.<name2>=<value2>
指定上述 URL 后,Beeline 将调用基础请求以将 HTTP 标头集添加到和,将另一个 HTTP 标头集设置为和。当最终用户需要将 HTTP 标头中的标识向下发送到中间服务器(如 Knox,通过 Beeline 进行身份验证)时,这非常有用,例如
http.header.USERNAME=<value1>;http.header.PASSWORD=<value2>。
对于早于 0.14 的版本,请参阅上面的version 注意。
通过 JDBC 驱动程序传递自定义 HTTP Cookie Key/Value 对
在 Hive version 3.0.0 HIVE-18447中为 clients 引入了一个选项,以提供可以发送到底层服务器的自定义 HTTP cookies。某些身份验证机制(如 Single Sign On)需要能够通过 JDBC 驱动程序将 cookie 传递给某些中间身份验证服务(如 Knox)。
JDBC 连接 URL:
jdbc:hive2://<host>:<port>/<db>;transportMode=http;httpPath=<http_endpoint>;http.cookie.<name1>=<value1>;http.cookie.<name2>=<value2>
指定上述 URL 后,Beeline 将调用基础请求以在请求标头中添加 HTTP cookie,并将其设置为 = 和 = 。
Variable Substitution
Hive 用于批处理和交互式查询。变量替换允许执行诸如从 code 中分离 environment-specific configuration 变量的任务。
Hive 变量替换机制旨在避免在 Hive 之上加入脚本语言的某些 code。
诸如以下 shell 命令之类的示例可能(效率低下)用于在脚本中设置变量:
$ a=b
$ hive -e " describe $a "
这很令人沮丧,因为 Hive 与脚本语言紧密结合。当进行数千次操作(例如多次hive -e调用)时,几秒钟的 Hive 启动 time 是 non-trivial。
Hive 变量将您熟悉和喜爱的设定能力与一些有限但强大的替代能力相结合。
以下示例:
$ bin/hive --hiveconf a=b -e 'set a; set hiveconf:a; \
create table if not exists b (col int); describe ${hiveconf:a}'
结果是:
Hive history file=/tmp/edward/hive_job_log_edward_201011240906_1463048967.txt
a=b
hiveconf:a=b
OK
Time taken: 5.913 seconds
OK
col int
Time taken: 0.754 seconds
有关 Hive 命令 line 选项的一般信息,请参阅Hive CLI。
版本信息
在 version 0.7.0(JIRA HIVE-1096)中添加了hiveconf选项。 Version 0.8.0 添加了选项define和hivevar(JIRA HIVE-2020),它们是等价的,在此不再赘述。它们在命名空间中创建自定义变量,该命名空间与 hiveconf,system 和 env 命名空间分开。
使用变量
变量有三个命名空间 - hiveconf,system 和 env。 (自定义变量也可以在 Hive 0.8.0 中使用define或hivevar选项的单独命名空间中创建,以后 releases.)
hiveconf 变量设置为正常:
set x=myvalue
但是,使用以下方法检索它
${hiveconf:x}
从测试用例 ql/src/test/queries/clientpositive/setprocessornamespaces.q 中使用的带注释的示例:
set zzz=5;
-- sets zzz=5
set zzz;set system:xxx=5;
set system:xxx;
-- sets a system property xxx to 5set system:yyy=${system:xxx};
set system:yyy;
-- sets yyy with value of xxxset go=${hiveconf:zzz};
set go;
-- sets go base on value on zzzset hive.variable.substitute=false;
set raw=${hiveconf:zzz};
set raw;
-- disable substitution set a value to the literalset hive.variable.substitute=true;EXPLAIN SELECT * FROM src where key=${hiveconf:zzz};
SELECT * FROM src where key=${hiveconf:zzz};
--use a variable in a queryset a=1;
set b=a;
set c=${hiveconf:${hiveconf:b}};
set c;
--uses nested variables. set jar=../lib/derby.jar;
add file ${hiveconf:jar};
list file;
delete file ${hiveconf:jar};
list file;
查询构造期间的替换
当使用变量构造查询时,Hive 将 value 替换为变量。
- 如果您运行两个不同的 Hive 会话,则不会跨会话混合变量值。
- 如果在同一 Hive session 中设置具有相同 name 的变量,则查询将使用最后一个 set value。
禁用变量替换
默认情况下,变量替换处于启用状态(hive.variable.substitute =true)。如果这导致现有脚本出现问题,请使用以下命令将其禁用:
set hive.variable.substitute=false;
命令 Line 接口
设置
HCatalog 命令 line 接口(CLI)可以作为HIVE_HOME= hive_home hcat_home /bin/hcat调用,其中 hive_home 是已安装 Hive 的目录,hcat_home 是已安装 HCatalog 的目录。
如果您正在使用 BigTop 的 rpms 或 debs,则可以通过执行/usr/bin/hcat来调用 CLI。
HCatalog CLI
HCatalog CLI 支持以下命令 line 选项:
选项 | 用法 | 描述 |
---|---|---|
-g | hcat -g mygroup … | 告诉 HCatalog 需要创建的 table 必须有 group“mygroup”。 |
-p | hcat -p rwxr-xr-x … | 告诉 HCatalog 需要创建的 table 必须具有权限“rwxr-xr-x”。 |
-f | hcat -f myscript.hcatalog … | 告诉 HCatalog myscript.hcatalog 是一个包含要执行的 DDL 命令的文件。 |
-e | hcat -e ‘create table mytable(a int);’ … | 告诉 HCatalog 将以下 string 视为 DDL 命令并执行它。 |
-D | hcat -D key = value … | 将 key-value 对作为 Java System Property 传递给 HCatalog。 |
请注意以下事项:
- -g和**-p**选项不是强制性的。
- 只能提供一个**-e或-f**选项,而不是两者。
- 选项的顺序并不重要;您可以在任何 order 中指定选项。
如果未提供选项,则会打印一条用法消息:
Usage: hcat { -e "<query>" | -f <filepath> } [-g <group>] [-p <perms>] [-D<name>=<value>]
所有者权限
使用 HCatalog CLI 时,如果没有对所有者的读取权限(例如-wxrwxr-x),则无法指定权限 string,因为 string 以“-”开头。如果需要这样的权限设置,您可以使用八进制 version,在这种情况下将是 375.此外,所有者具有读取权限(对于 example r-x-----或r–r–r–)的任何其他类型的权限 string 将正常工作。
Hive CLI
许多hcat命令可以作为hive命令发出,包括所有 HCatalog DDL 命令。 Hive CLI 包含一些 HCatalog CLI 中不可用的命令。请注意这些差异:
- table group 的“hcat -g”和“hcat -p”以及权限设置仅在 HCatalog CLI 中可用。
- hcat使用-p flag 进行权限,但hive使用它来指定 port 编号。
- hcat使用没有空格的-D flag 来定义 key=value 对,但是hive使用带有空格的-d或–define(也是–hivevar)。
例如,“hcat -DA=B”与“hive -d A=B”。 - 没有任何标志的hcat打印帮助消息,但hive使用-H flag 或–help。
相关文章:
Hive用户中文使用手册系列(四)
Python Client 在github 上上可以使用 Python client 驱动程序。有关安装说明,请参阅设置 HiveServer2:Python Client 驱动程序。 Ruby Client 一个 Ruby client 驱动程序在https://github.com/forward3d/rbhive的 github 上可用。 与 SQuirrel SQL …...
高级深入--day37
手机App抓包爬虫 1. items.py class DouyuspiderItem(scrapy.Item):name scrapy.Field()# 存储照片的名字imagesUrls scrapy.Field()# 照片的url路径imagesPath scrapy.Field()# 照片保存在本地的路径2. spiders/douyu.py import scrapy import json from douyuSpider.it…...

Web自动化测试:测试用例断言!
运行测试用例时,需要判断用例是否执行成功,此时需要有一个我们期望的结果来进行验证。这里unittest中,如果一个case执行的过程中报错,或者我们判断结果不符合期望,就会判定此条用例执行失败,判断的条件主要…...

基于SSM的培训学校教学管理平台的设计与实现
末尾获取源码 开发语言:Java Java开发工具:JDK1.8 后端框架:SSM 前端:Vue 数据库:MySQL5.7和Navicat管理工具结合 服务器:Tomcat8.5 开发软件:IDEA / Eclipse 是否Maven项目:是 目录…...

2019年亚太杯APMCM数学建模大赛A题基于图像分析的二氧化硅熔化表示模型求解全过程文档及程序
2019年亚太杯APMCM数学建模大赛 A题 基于图像分析的二氧化硅熔化表示模型 原题再现 铁尾矿的主要成分是二氧化硅,而二氧化硅是铁尾矿成分中最难熔化的部分。因此,铁尾矿的熔融行为可以用二氧化硅的熔融行为来表示。然而,高温熔池的温度超过…...

C++之继承<2>【详解】
C之继承<2>【详解】 1. 派生类的默认成员函数1.1 1. 构造成员函数1.2 拷贝复制1.3 构造函数和析构函数的执行顺序 2. 继承和友元3. 继承与静态成员 1. 派生类的默认成员函数 1.1 1. 构造成员函数 派生类的构造函数必须调用基类的构造函数初始化基类的那…...
解决Kafka新消费者组导致重复消费的问题
问题描述:在使用Kafka时,当我们向新的消费者组中添加消费者时,可能会遇到重复消费的问题。本文将介绍一些解决这个问题的方法,帮助开发者更好地处理Kafka中的消费者组和消费偏移量。 Kafka是一个强大的分布式消息队列系统…...
公允价值会计(fair-value accounting)
《公允价值会计》是2008年经济科学出版社出版图书。 公允价值会计又称市值会计,是指以市场价值或未来现金流量的现值作为资产和负债的主要计量属性的会计模式。随着现代交通和通讯技术的发展,在工业社会中相互分割的市场正在走向世界一体化,…...
【java调取第三方接口,获取数据并保存至数据库】
java调取第三方接口,获取数据并保存至数据库 Overridepublic void doPost() {// 创建Httpclient对象CloseableHttpClient httpClient HttpClients.createDefault();CloseableHttpResponse response null;String resultString "";String url "htt…...

图论01-【无权无向】-图的基本表示-邻接矩阵/邻接表
文章目录 1. 代码仓库2. 图的基本表示的比较3. 邻接矩阵:Array和TreeSet3.1 图示3.2 Array主要代码解析3.3 测试输出3.4 使用TreeSet的代码 4. 邻接表:LinkedList4.1 图示4.2 LinkedList主要代码解析4.3 测试输出 5. 完整代码5.1 邻接表 - Array5.2 邻接…...

Bootstrap的列表组相关知识
目录 01-列表组的相关基础知识02-一个简单的列表组示例03-激活或禁用列表组的一行或多行04-设置列表项的颜色05-给列表项添加徽章 01-列表组的相关基础知识 Bootstrap的list-group是一个用于创建列表组件的CSS类,通常用于显示一个项目列表,如导航菜单或…...

Linux简单安装ffmpeg 实现用PHP压缩音频
一、下载安装 1、官方下载地址:Download FFmpeg 2、下载完上传到服务器然 然后解压就算安装完成了 tar -xf ffmpeg-git-amd64-static.tar.xz 3、然后配置一下全局变量(当然也可以不用配置 使用的时候带上文件路径就行) cd /usr/bin ln -s…...

Vue解决 npm -v 报错(一)
报错内容: npm WARN config global --global, --local are deprecated. Use --locationglobal instead. 解决方案: 代码: prefix -g 替换为: prefix --locationglobal 原创作者:吴小糖 创作时间:2023.1…...

IP地址是如何定位的
IP地址定位原理和方法 在互联网时代,了解设备或用户的地理位置对于各种应用和服务至关重要,从广告定向到网络安全。IP地址定位是一种常用的方法,允许确定IP地址背后的实际地理位置。本文将介绍IP地址定位的原理和方法。 IP地址基础…...

【分布式】入门级NCCL多机并行实践 - 02
# 背景知识 大模型和分布式训练对数据的吞吐量以及并行度都有很高的要求,NCCL就是在这个背景下诞生的。 如果你是一个只会写写Python,调用PyTorch和Horovod的算法萌新,可能对于分布式底层的东西不太了解,在下岗热潮中被主管逼着…...
Rust的模式匹配
文章目录 match匹配if let匹配 match匹配 match可以结合枚举使用,例如 enum IpVersion {V4,V6, }fn ParseIpVersion(version: IpVersion) -> String {match version {IpVersion::V4 > String::from("ipv4"),IpVersion::V6 > String::from(&quo…...

操作系统【OS】虚拟机
定义 使用虚拟化技术,将一台物理机器虚化为多台虚拟机器VM,每个虚拟机器都可用独立运行一个操作系统 分类 传统计算机 第一类VMM 第二类VMM...

不写代码、构建一个开源的 ChatGPT,总共需要几步?|Hugging News #1020
每一周,我们的同事都会向社区的成员们发布一些关于 Hugging Face 相关的更新,包括我们的产品和平台更新、社区活动、学习资源和内容更新、开源库和模型更新等,我们将其称之为「Hugging News」。本期 Hugging News 有哪些有趣的消息࿰…...

VBA操作数据库
相关背景: 对于数据分析同学,一般SQL,EXCEL是必备技能,但对于VBA和Python可能有的同学不会;在处理本地数据上(诸如excel、txt|csv文本),后续尝试使用VBA或者Python写一个sql查询的GUI界面&…...
【华为OD机试】HJ26 字符串排序
描述 编写一个程序,将输入字符串中的字符按如下规则排序。 规则 1 :英文字母从 A 到 Z 排列,不区分大小写。 如,输入: Type 输出: epTy 规则 2 :同一个英文字母的大小写同时存在时,…...

Docker 离线安装指南
参考文章 1、确认操作系统类型及内核版本 Docker依赖于Linux内核的一些特性,不同版本的Docker对内核版本有不同要求。例如,Docker 17.06及之后的版本通常需要Linux内核3.10及以上版本,Docker17.09及更高版本对应Linux内核4.9.x及更高版本。…...
Java 语言特性(面试系列2)
一、SQL 基础 1. 复杂查询 (1)连接查询(JOIN) 内连接(INNER JOIN):返回两表匹配的记录。 SELECT e.name, d.dept_name FROM employees e INNER JOIN departments d ON e.dept_id d.dept_id; 左…...
内存分配函数malloc kmalloc vmalloc
内存分配函数malloc kmalloc vmalloc malloc实现步骤: 1)请求大小调整:首先,malloc 需要调整用户请求的大小,以适应内部数据结构(例如,可能需要存储额外的元数据)。通常,这包括对齐调整,确保分配的内存地址满足特定硬件要求(如对齐到8字节或16字节边界)。 2)空闲…...
三维GIS开发cesium智慧地铁教程(5)Cesium相机控制
一、环境搭建 <script src"../cesium1.99/Build/Cesium/Cesium.js"></script> <link rel"stylesheet" href"../cesium1.99/Build/Cesium/Widgets/widgets.css"> 关键配置点: 路径验证:确保相对路径.…...
可靠性+灵活性:电力载波技术在楼宇自控中的核心价值
可靠性灵活性:电力载波技术在楼宇自控中的核心价值 在智能楼宇的自动化控制中,电力载波技术(PLC)凭借其独特的优势,正成为构建高效、稳定、灵活系统的核心解决方案。它利用现有电力线路传输数据,无需额外布…...
Python爬虫实战:研究feedparser库相关技术
1. 引言 1.1 研究背景与意义 在当今信息爆炸的时代,互联网上存在着海量的信息资源。RSS(Really Simple Syndication)作为一种标准化的信息聚合技术,被广泛用于网站内容的发布和订阅。通过 RSS,用户可以方便地获取网站更新的内容,而无需频繁访问各个网站。 然而,互联网…...

Cilium动手实验室: 精通之旅---20.Isovalent Enterprise for Cilium: Zero Trust Visibility
Cilium动手实验室: 精通之旅---20.Isovalent Enterprise for Cilium: Zero Trust Visibility 1. 实验室环境1.1 实验室环境1.2 小测试 2. The Endor System2.1 部署应用2.2 检查现有策略 3. Cilium 策略实体3.1 创建 allow-all 网络策略3.2 在 Hubble CLI 中验证网络策略源3.3 …...

ServerTrust 并非唯一
NSURLAuthenticationMethodServerTrust 只是 authenticationMethod 的冰山一角 要理解 NSURLAuthenticationMethodServerTrust, 首先要明白它只是 authenticationMethod 的选项之一, 并非唯一 1 先厘清概念 点说明authenticationMethodURLAuthenticationChallenge.protectionS…...
Caliper 配置文件解析:config.yaml
Caliper 是一个区块链性能基准测试工具,用于评估不同区块链平台的性能。下面我将详细解释你提供的 fisco-bcos.json 文件结构,并说明它与 config.yaml 文件的关系。 fisco-bcos.json 文件解析 这个文件是针对 FISCO-BCOS 区块链网络的 Caliper 配置文件,主要包含以下几个部…...
LeetCode - 199. 二叉树的右视图
题目 199. 二叉树的右视图 - 力扣(LeetCode) 思路 右视图是指从树的右侧看,对于每一层,只能看到该层最右边的节点。实现思路是: 使用深度优先搜索(DFS)按照"根-右-左"的顺序遍历树记录每个节点的深度对于…...