Hadoop入门学习笔记——六、连接到Hive
视频课程地址:https://www.bilibili.com/video/BV1WY4y197g7
课程资料链接:https://pan.baidu.com/s/15KpnWeKpvExpKmOC8xjmtQ?pwd=5ay8
Hadoop入门学习笔记(汇总)
目录
- 六、连接到Hive
- 6.1. 使用Hive的Shell客户端
- 6.2. 使用Beeline客户端连接HiveServer2操作Hive
- 6.3. 使用DataGrip连接HiveServer2操作Hive
- 6.4. 使用DBeaver连接HiveServer2操作Hive
六、连接到Hive
6.1. 使用Hive的Shell客户端
1、在HDFS集群、JobHistoryServer、YARN集群、metastore服务均已启动的前提下,进入hive客户端
su hadoop
cd /export/server/hive/bin
# 进入hive客户端
./hive
2、创建表
create table test(id int, name string, gender string);
3、展示当前数据库的所有表
show tables;
4、插入数据
INSERT INTO test VALUES(1, '王力红', '男'), (2, '周杰轮', '男'), (3, '林志灵', '女');
执行时会发现非常慢,查看执行日志之后发现,虽然写的是SQL代码,但是实际是一个MapReduce程序在执行。

虽然这里执行很慢,但是在实际使用场景中,Hive数据都是批量(一次性几百万以上)插入的,不会一条条的插入,所以性能会更高。
5、查询数据
# 查询数据
select * from test;
# 按性别统计人数
SELECT gender, COUNT(*) AS cnt FROM test GROUP BY gender;
执行之后会发现,第一条语句执行非常快,没有转换成MapReduce程序,第二条语句又会转换成MapReduce程序进行执行(慢的原因主要在于提交到YARN集群,YARN集群准备阶段慢)。

6、Hive中数据库和数据的存放路径位于HDFS文件系统的/user/hive/warehouse路径下,该路径下,每个Hive库中的表都是一个文件夹,使用fs -ls /user/hive/warehouse命令可以查看,下图test文件夹表示刚才创建的test表(一个hive库就是一个HDFS系统中的文件夹,一个表也是HDFS系统中的一个文件夹,default库下的表直接体现为/user/hive/warehouse下的文件夹,其他自定义库也是/user/hive/warehouse下的文件夹,然后其库内的表,是下一层的文件夹);

使用hadoop fs -cat /user/hive/warehouse/test/*命令查看test文件夹下所有文件的内容,可以看到刚才通过insert语句插入的数据

所以,Hive表面上看起来操作的是数据库和表,但本质上还是在操作HDFS系统中的文件。
上图中,可以看到在命令行中,没法看到test表中各列数据的分隔符(看起来数据都是紧密排列的),可以在元数据库(MySQL)中查询到对应的分隔符信息(默认分隔符是“\001”,是一个特殊字符,是ASCII码,在控制台上无法显示,在部分软件中显示为SOH),在bash shell命令行中使用mysql -u root -p命令登录MySQL;
# 选择hive数据库
use hive;
# 查看hive库中的表
show tables;
# 查看hive中所有的表
select * from TBLS;

可以看到刚才在hive中新建的test表及其信息。
# 查看hive中所有的库及其信息
select * from DBS;

可以看到hive中的default数据库,可以看到其在HDFS中的存储位置(hdfs://node1:8020/user/hive/warehouse)。
6.2. 使用Beeline客户端连接HiveServer2操作Hive
HiveServer2是Hive内置的一个ThriftServer服务,提供Thrift端口供其它客户端链接。
可以连接ThriftServer的客户端有:
- Hive内置的 beeline客户端工具(命令行工具);
- 第三方的图形化SQL工具,如DataGrip、DBeaver、Navicat等。
Hive的客户端体系如下所示:

6.1章节演示的便是bin/hive客户端,本章节介绍通过Beeline连接hiveservice2的方式操作Hive。
1、启动HiveServer2(在node1节点)
在启动hiveserver2服务之前,需要确保metastore服务已经启动了。
前台启动方式:./hive --service hiveserver2
后台启动方式:nohup ./hive --service hiveserver2 >> ../logs/hiveserver2.log 2>&1 &
在实际工作中,一般使用后台启动方式启动。
启动完成后,可以使用netstat -anp | grep 10000命令,查看node1服务器的10000端口(ThriftServer服务的端口号)正在被hiveserver2服务的进程(通过进程号比对可知)占用着。
2、使用Beeline客户端连接HiveServer2服务
在$HIVE_HOME/bin目录下,有一个beeline程序,可以直接使用./beeline打开beeline命令行,如下所示:

在beeline命令行中输入!connect jdbc:hive2://node1:10000连接HiveServer2服务,这个命令的含义是,告知beeline客户端,我们要发起连接,使用jdbc驱动,按照hive2协议,连接node1(这里也可以是IP地址)的10000号端口。
输入上述命令后,程序会提示输入用户名,这里需要输入启动hive的启动用户(即hadoop),然后会提示输入密码,因为没有配置,所以直接回车即可,然后就可以看到已经连接好了,具体效果如下:

3、此时,就可以在0: jdbc:hive2://node1:10000>shell中输入相关的SQL语句,操作hive了。
在显示效果上,beeline客户端要比hive的shell客户端好看一些,查询结果都是以表格的格式返回的,而hive的shell客户端则是直接文本输出。
show databases;

show tables;

select * from test;

可以看到,这里虽然是查询动作,但是由于没有统计和计算,所以并没有转换成MapReduce程序。
select gender, count(*) from test group by gender;

可以看到,当进行统计、计算的时候,这里将SQL转化成了MapReduce程序在运行,相应的,运行时间也会更长一点。而且,在在YARN集群的监控页面http://node1:8088/中,也可以看到执行该条SQL的MapReduce应用记录。

4、关闭HiveServer2
使用ps -aux | grep hiveserver2命令,查询到hiveserver2服务的进程号,然后使用kill命令杀死对应进程即可。
6.3. 使用DataGrip连接HiveServer2操作Hive
DataGrip是由JetBrains公司推出的数据库管理软件,DataGrip支持几乎所有主流的关系数据库产品,如DB2、Derby、MySQL、Oracle、SQL Server等,也支持几乎所有主流的大数据生态圈SQL软件,并且提供了简单易用的界面,开发者上手几乎不会遇到任何困难。
1、新建或打开一个工程;
2、在左侧的“DataBase Explorer”中,点击左上角的“+”号,然后选择“DataSource-Apache Hive”,若看不到Apache Hive选项,可以在Other中寻找;

3、在打开的新建Hive连接页面中填写连接的自定义名称、Host(改为node1)、Port(改为10000)、User(改为hadoop)后,点击页面下部的“Download”链接;

4、配置及驱动都准备好后,点击TestConnection按钮,测试连通性。
在DataGrip中,除了写SQL语句外,也可以通过图形化的方式创建库、表等操作,也可以图形化的查看数据。
6.4. 使用DBeaver连接HiveServer2操作Hive
1、打开DBeaver,新建连接,选择Apache Hive(如果找不到,就在Other里面找);

2、在弹出的新建连接窗口,填写主机(node1)、端口号(10000)、用户名(hadoop),然后点击“编辑驱动设置”按钮;

3、在驱动设置窗口,选择“库”选项卡,删除其内置的库,添加本课程资料中提供的hive-jdbc-3.1.2-standalone.jar驱动程序,然后点击“确定”按钮,再点击“测试连接”按钮,看到“已连接”代表配置成功,点击“完成”按钮;


相关文章:
Hadoop入门学习笔记——六、连接到Hive
视频课程地址:https://www.bilibili.com/video/BV1WY4y197g7 课程资料链接:https://pan.baidu.com/s/15KpnWeKpvExpKmOC8xjmtQ?pwd5ay8 Hadoop入门学习笔记(汇总) 目录 六、连接到Hive6.1. 使用Hive的Shell客户端6.2. 使用Beel…...
【K8S 基本概念】Kurbernetes的架构和核心概念
目录 一、Kurbernetes 1.1 简介 1.2、K8S的特性: 1.3、docker和K8S: 1.4、K8S的作用: 1.5、K8S的特性: 二、K8S集群架构与组件: 三、K8S的核心组件: 一、master组件: 1、kube-apiserve…...
WPS复选框里打对号,显示小太阳或粗黑圆圈的问题解决方法
问题描述 WPS是时下最流行的字处理软件之一,是目前唯一可以和微软office办公套件相抗衡的国产软件。然而,在使用WPS的过程中也会出现一些莫名其妙的错误,如利用WPS打开docx文件时,如果文件包含复选框,经常会出…...
对“企业数据资源相关会计处理暂行规定“的个人理解
附:2023年数据资源入表白皮书下载: 关注WX公众号: commindtech77, 获得数据资产相关白皮书下载地址 1. 回复关键字:数据资源入表白皮书 下载 《2023数据资源入表白皮书》 2. 回复关键字:光大银行 下载 光…...
JavaScript:函数隐含对象arguments/剩余参数. . .c/解构赋值
除了this,在函数内部还存在着一个隐含的参数arguments arguments 是一个类数组对象(伪数组) 调用函数时传递的所有实参,都被存储在arguments中 arguments[0] 表示的是第一个实参 arguments[1] 表示的是第二个实参 以此类推..…...
MFC窗体背景颜色的设置、控件白色背景问题、控件文本显示重叠问题、被父窗体背景覆盖的问题
文章目录 设置mfc窗体背景颜色窗体设置背景颜色后解决控件白色背景解决重复修改控件文本后重叠的问题自绘控件被父窗体背景覆盖的问题 设置mfc窗体背景颜色 设置窗体的背景颜色非常简单,只需要在窗体的OnEraseBkgnd里面填充窗体背景就可以了,甚至直接画…...
c++简易AI
今天小编一时雅兴大发,做了一个c的简易AI,还是很垃圾的! 题外话(每期都会有):我的蛋仔名叫酷影kuying,大家能加我好友吗? 上代码咯! #include<bits/stdc.h> #in…...
java获取两个List集合之间的交集、差集、并集
文章目录 方式一、jdk8 Stream求交集、并集、差集方式二、求交集方式三、collections4.CollectionUtils求交集、差集、并集 本文总结一下java中获取两个List之间的交集、补集、并集的几种方式。 最常用的通过for循环遍历两个集合的方式在这里就不整理了,主要整理一些…...
轻松实现iphone截图传电脑
目录 摘要 引言 用户登录工具和连接设备 生成截图 摘要 本篇博文介绍了克魔助手这款工具,解决了iPhone与Windows系统下图片传输的烦恼。通过连接同一Wi-Fi,使用克魔助手轻松实现了iPhone截图传输到电脑上的便捷操作。用户只需简单地下载并安装克魔助…...
【网络安全】upload靶场pass1-10思路
目录 Pass-1 Pass-2 Pass-3 Pass-4 Pass-5 Pass-6 Pass-7 Pass-8 Pass-9 Pass-10 🌈嗨!我是Filotimo__🌈。很高兴与大家相识,希望我的博客能对你有所帮助。 💡本文由Filotimo__✍️原创,首发于CSDN…...
共享单车之数据存储
文章目录 第1关:获取工作簿中的数据第2关:保存共享单车数据 第1关:获取工作簿中的数据 相关知识 获取工作簿中的信息,我们可以使用Java POI(POI是一个提供API给Java程序对Microsoft Office格式档案读和写的功能&#…...
Flink(十一)【状态管理】
Flink 状态管理 我们一直称 Flink 为运行在数据流上的有状态计算框架和处理引擎。在之前的章节中也已经多次提到了“状态”(state),不论是简单聚合、窗口聚合,还是处理函数的应用,都会有状态的身影出现。状态就如同事务…...
【三维目标检测/自动驾驶】IA-BEV:基于结构先验和自增强学习的实例感知三维目标检测(AAAI 2024)
系列文章目录 论文:Instance-aware Multi-Camera 3D Object Detection with Structural Priors Mining and Self-Boosting Learning 地址:https://arxiv.org/pdf/2312.08004.pdf 来源:复旦大学 英特尔Shanghai Key Lab /美团 文章目录 系列文…...
wefew
123212...
Springboot整合JSP-修订版本(Springboot3.1.6+IDEA2022版本)
1、问题概述? Springboot对Thymeleaf支持的要更好一些,Springboot内嵌的Tomcat默认是没有JSP引擎,不支持直接使用JSP模板引擎。这个时候我们需要自己配置使用。 2、Springboot整合使用JSP过程 现在很多的IDEA版本即使创建的项目类型是WAR工…...
Java核心知识点1-java和c++区别、隐式和显示类型转换
java和c区别 java通过虚拟机实现跨平台特性,但c依赖于特定的平台。java没有指针,它的引用可以理解为安全指针,而c和c一样具有指针。java支持自动垃圾回收,而c需要手动回收。java不支持多重继承,只能通过实现多个接口来…...
C++图论之强连通图
1. 连通性 什么是连通性? 连通,字面而言,类似于自来水管道中的水流,如果水能从某一个地点畅通流到另一个地点,说明两点之间是连通的。也说明水管具有连通性,图中即如此。 无向图和有向图的连通概念稍有差…...
SadTalker数字人增加视频输出mp4质量精度
最近在用数字人简易方案,看到了sadtalker虽然效果差,但是可以作为一个快速方案,没有安装sd的版本,随便找了个一键安装包 设置如上 使用倒是非常简单,但是出现一个问题,就是输出的mp4都出马赛克了 界面上却…...
swing快速入门(三十二)消息对话框
注释很详细,直接上代码 上一篇 新增内容 1.自定义对话框前列图标 2.消息对话框的若干种形式 package swing21_30;import javax.swing.*; import java.awt.*; import java.awt.event.ActionEvent;public class swing_test_30 {// 定义一个JFrameJFrame jFrame n…...
《Spring Cloud学习笔记:Nacos配置管理 OpenFeign LoadBalancer Getway》
基于Feign的声明式远程调用(代码更优雅),用它来去代替我们之前的RestTemplate方式的远程调用 1. Nacos配置管理:Nacos Config 服务配置中心介绍 首先我们来看一下,微服务架构下关于配置文件的一些问题: 配置文件相…...
XCTF-web-easyupload
试了试php,php7,pht,phtml等,都没有用 尝试.user.ini 抓包修改将.user.ini修改为jpg图片 在上传一个123.jpg 用蚁剑连接,得到flag...
日语AI面试高效通关秘籍:专业解读与青柚面试智能助攻
在如今就业市场竞争日益激烈的背景下,越来越多的求职者将目光投向了日本及中日双语岗位。但是,一场日语面试往往让许多人感到步履维艰。你是否也曾因为面试官抛出的“刁钻问题”而心生畏惧?面对生疏的日语交流环境,即便提前恶补了…...
基于大模型的 UI 自动化系统
基于大模型的 UI 自动化系统 下面是一个完整的 Python 系统,利用大模型实现智能 UI 自动化,结合计算机视觉和自然语言处理技术,实现"看屏操作"的能力。 系统架构设计 #mermaid-svg-2gn2GRvh5WCP2ktF {font-family:"trebuchet ms",verdana,arial,sans-…...
基于ASP.NET+ SQL Server实现(Web)医院信息管理系统
医院信息管理系统 1. 课程设计内容 在 visual studio 2017 平台上,开发一个“医院信息管理系统”Web 程序。 2. 课程设计目的 综合运用 c#.net 知识,在 vs 2017 平台上,进行 ASP.NET 应用程序和简易网站的开发;初步熟悉开发一…...
前端倒计时误差!
提示:记录工作中遇到的需求及解决办法 文章目录 前言一、误差从何而来?二、五大解决方案1. 动态校准法(基础版)2. Web Worker 计时3. 服务器时间同步4. Performance API 高精度计时5. 页面可见性API优化三、生产环境最佳实践四、终极解决方案架构前言 前几天听说公司某个项…...
线程与协程
1. 线程与协程 1.1. “函数调用级别”的切换、上下文切换 1. 函数调用级别的切换 “函数调用级别的切换”是指:像函数调用/返回一样轻量地完成任务切换。 举例说明: 当你在程序中写一个函数调用: funcA() 然后 funcA 执行完后返回&…...
STM32F4基本定时器使用和原理详解
STM32F4基本定时器使用和原理详解 前言如何确定定时器挂载在哪条时钟线上配置及使用方法参数配置PrescalerCounter ModeCounter Periodauto-reload preloadTrigger Event Selection 中断配置生成的代码及使用方法初始化代码基本定时器触发DCA或者ADC的代码讲解中断代码定时启动…...
c++ 面试题(1)-----深度优先搜索(DFS)实现
操作系统:ubuntu22.04 IDE:Visual Studio Code 编程语言:C11 题目描述 地上有一个 m 行 n 列的方格,从坐标 [0,0] 起始。一个机器人可以从某一格移动到上下左右四个格子,但不能进入行坐标和列坐标的数位之和大于 k 的格子。 例…...
基础测试工具使用经验
背景 vtune,perf, nsight system等基础测试工具,都是用过的,但是没有记录,都逐渐忘了。所以写这篇博客总结记录一下,只要以后发现新的用法,就记得来编辑补充一下 perf 比较基础的用法: 先改这…...
Java-41 深入浅出 Spring - 声明式事务的支持 事务配置 XML模式 XML+注解模式
点一下关注吧!!!非常感谢!!持续更新!!! 🚀 AI篇持续更新中!(长期更新) 目前2025年06月05日更新到: AI炼丹日志-28 - Aud…...
