Hadoop入门学习笔记——六、连接到Hive

news2025/1/16 0:50:56

视频课程地址: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驱动程序,然后点击“确定”按钮,再点击“测试连接”按钮,看到“已连接”代表配置成功,点击“完成”按钮;
在这里插入图片描述
在这里插入图片描述

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

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

相关文章

【一起学Rust | 框架篇 | Tauri2.0框架】Tauri2.0环境搭建与项目创建

文章目录 前言一、搭建 Tauri 2.0 开发环境二、创建 Tauri 2.0 项目1.创建项目2.安装依赖4. 编译运行 三、设置开发环境四、项目结构 前言 Tauri在Rust圈内成名已久,凭借Rust的可靠性,使用系统原生的Webview构建更小的App 以及开发人员可以灵活的使用各…

WARNING: HADOOP_SECURE_DN_USER has been replaced by HDFS_DATANODE_SECURE_USER.

Hadoop启动时警告,但不影响使用,强迫症的我还是决定寻找解决办法 WARNING: HADOOP_SECURE_DN_USER has been replaced by HDFS_DATANODE_SECURE_USER. Using value of HADOOP_SECURE_DN_USER.原因是Hadoop安装配置于root用户下,对文件需要进…

Linux---基础操作命令

内容导航 类别内容导航机器学习机器学习算法应用场景与评价指标机器学习算法—分类机器学习算法—回归机器学习算法—聚类机器学习算法—异常检测机器学习算法—时间序列数据可视化数据可视化—折线图数据可视化—箱线图数据可视化—柱状图数据可视化—饼图、环形图、雷达图统…

一文详解SpringBoot 定时任务(cron表达式)

IDE:IntelliJ IDEA 2022.2.3 x64 操作系统:win10 x64 位 家庭版 JDK: 1.8 文章目录 一、如何开启一个SpringBoot定时任务?二、cron表达式详解2.1 语法格式2.2 符号解析2,2.1 通用符号: , - * /2.2.2 专有符号:?L w 2.3…

【JAVA】分布式链路追踪技术概论

目录 1.概述 2.基于日志的实现 2.1.实现思想 2.2.sleuth 2.2.可视化 3.基于agent的实现 4.联系作者 1.概述 当采用分布式架构后,一次请求会在多个服务之间流转,组成单次调用链的服务往往都分散在不同的服务器上。这就会带来一个问题:…

异常处理和单元测试python

一、实验题目 异常处理和单元测试 二、实验目的 了解异常的基本概念和常用异常类。掌握异常处理的格式、处理方法。掌握断言语句的作用和使用方法。了解单元测试的基本概念和作用。掌握在Python中使用测试模块进行单元测试的方法和步骤。 三、实验内容 编程实现如下功能&a…

跨平台Markdown编辑软件Typora mac功能介绍

Typora mac是一款跨平台的Markdown编辑器,支持Windows、MacOS和Linux操作系统。它具有实时预览功能,能够自动将Markdown文本转换为漂亮的排版效果,让用户专注于写作内容而不必关心格式调整。Typora Mac版除了支持常见的Markdown语法外&#x…

网站被CC攻击了怎么办?CC攻击有什么危害

网络爆炸性地发展,网络环境也日益复杂和开放,同时各种各样的恶意威胁和攻击日益增多,其中网站被CC也是常见的情况。 CC攻击有什么危害呢? 被CC会导致: 1.访问速度变慢:网站遭受CC攻击后,由于…

模式识别与机器学习(十一):Bagging

1.原理 Bagging [Breiman, 1996a] 是井行式集成学习方法最著名的代表.从名字即可看出,它直接基于自助采样法(bootstrap sampling)。给定包含m 个样本的数据集,我们先随机取出一个样本放入采样集中,再把该样本放回初始数据集,使得…

高频知识汇总 | 【操作系统】面试题汇总(万字长博通俗易懂)

前言 这篇我亲手整理的【操作系统】资料,融入了我个人的理解。当初我在研习八股文时,深感复习时的困扰,网上资料虽多,却过于繁杂,有的甚至冗余。例如,文件管理这部分,在实际面试中很少涉及&…

《PySpark大数据分析实战》-18.什么是数据分析

📋 博主简介 💖 作者简介:大家好,我是wux_labs。😜 热衷于各种主流技术,热爱数据科学、机器学习、云计算、人工智能。 通过了TiDB数据库专员(PCTA)、TiDB数据库专家(PCTP…

展望2023年CSDN博客之星评选

目录 1 前言2 博客的意义3 人工智能对博客的影响4 AI 技术下的成长与分享5 技术的探索6 博客之星评选对于技术人的激励作用7 结语 1 前言 当我们回顾过去,博客不仅仅是一种记录生活、分享经验的方式,更是一个见证自我成长与进步的平台。站在2023年度 CS…

Python算法例25 落单的数Ⅲ

1. 问题描述 给出2n2个非负整数元素的数组,除其中两个数字之外,其他每个数字均出现两次,找到这两个数字。 2. 问题示例 给出[1,2,2,3,4,4,5,3]&#xff0c…

SpringIOC之AbstractMessageSource

博主介绍:✌全网粉丝5W,全栈开发工程师,从事多年软件开发,在大厂呆过。持有软件中级、六级等证书。可提供微服务项目搭建与毕业项目实战,博主也曾写过优秀论文,查重率极低,在这方面有丰富的经验…

nodejs+vue+微信小程序+python+PHP计算机网络在线考试系统-计算机毕业设计推荐

信息数据的处理完全依赖人工进行操作, 所以电子化信息管理的出现就能缓解以及改变传统人工方式面临的处境,一方面可以确保信息数据在短时间被高效处理,还能节省人力成本,另一方面可以确保信息数据的安全性,可靠性&…

el-tree lazy懒加载(进阶版)

2023.12.22今天我学习了el-tree如何实现懒加载&#xff0c;效果如&#xff1a; 代码如下&#xff1a; 懒加载的使用不需要用:data <template><div><el-tree:props"props":load"loadNode"lazynode-key"id"show-checkbox/><…

新版IDEA中Git的使用(一)

说明&#xff1a;本文介绍如何在新版IDEA中使用Git 创建项目 首先&#xff0c;在GitLab里面创建一个项目&#xff08;git_demo&#xff09;&#xff0c;克隆到桌面上。 然后在IDEA中创建一个项目&#xff0c;项目路径放在这个Git文件夹里面。 Git界面 当前分支&Commit …

Pinely Round 3 (Div. 1 + Div. 2)(A~D)(有意思的题)

A - Distinct Buttons 题意&#xff1a; 思路&#xff1a;模拟从&#xff08;0,0&#xff09;到每个位置需要哪些操作&#xff0c;如果总共需要4种操作就输出NO。 // Problem: A. Distinct Buttons // Contest: Codeforces - Pinely Round 3 (Div. 1 Div. 2) // URL: https…

Leetcode—1962.移除石子使总数最小【中等】(最大堆做法)

2023每日刷题&#xff08;六十八&#xff09; Leetcode—1962.移除石子使总数最小 实现代码 class Solution { public:void downAdjustHeap(vector<int>& arr, int low, int high) {int i low, j i * 2 1;while(j < high) {if(j 1 < high && arr…

7.3电话号码的字母组合(LC17-M)

算法&#xff1a; 数字到字母要映射&#xff0c;可以用map&#xff0c;也可以用二维数组&#xff0c;或者直接用一个字符串 这里用字符串&#xff0c;键入的数字对应字符串的索引 String[] numString {"", "", "abc", "def", &quo…