Hive入门--学习笔记

1,Apache Hive概述

定义:
Hive是由Facebook开源用于解决海量结构化日志的数据统计,它是基于大数据生态圈Hadoop的一个数据仓库工具。
作用:
Hive可以用于将结构化的数据文件【映射】为一张表,并提供类SQL查询功能。
Hive的本质是将SQL转化成MapReduce程序。
使用场景:
主要用途:用来做离线数据分析,比直接MapReduce的开发效率更高。

总结作用:Hive可以简单理解为"SQL–MapReduce"框架的一个封装,可以将用户编写的SQL语句解析成对应的MapReduce程序,最终通过MapReduce运算框架形成运算结果,并提交给客户端Client。

1,Hive的优缺点

(1)优点
(a)操作接口采用类SQL语法,提供快速开发的能力;

(b)避免了直接去写MapReduce运算程序,减少开发人员的学习成本;

(c)Hive支持用户自定义函数,功能扩展很方便。

(2)缺点
(a)Hive的执行延迟比较高,因此Hive常用于数据分析,对实时性要求不高的场合;

(b)Hive优势在于处理大数据,对于处理小数据几乎没有优势,因为Hive的执行延迟比较高;

(c)直接使用MapReduce实现复杂查询逻辑开发难度太大,可以转而使用Hive完成。

2,Hive基础架构

(1)用户接口
用户接口包括CLI、JDBC/ODBC、WebGUI。
a)CLI(command line interface)为shell命令行;
b)JDBC/ODBC是Hive的Java实现,与传统数据库JDBC类似;
c)WebGUI是通过浏览器访问Hive。

Hive提供了Hive Shell、ThriftServer等服务进程向用户提供操作接口。
(2)元数据存储
元数据包含: 用Hive创建的database、table、表的字段等元信息。
元数据存储: 存在关系型数据库中,如:hive内置的Derby数据库或者第三方MySQL数据库等。

在Hive中,元数据存储需要使用MetaStore。
(3)Driver驱动程序
Driver包括语法解析器、计划编译器、优化器、执行器,可以完成HQL查询语句从词法分析、语法分析、编译、优化以及查询计划的生成。
生成的查询计划存储在HDFS中,并在随后由MapReduce调用执行。

这部分内容不是具体的服务进程,而是封装在Hive所依赖的Jar文件即Java代码中。
2,当使用Hive时,与传统数据库对比,特性有
(1)Hive用于海量数据的离线数据分析;

(2)Hive具有SQL数据库的外表,但应用场景完全不同,Hive只适合用来做批量数据统计分析。
请添加图片描述

2,Hive部署

1,MetaStore元数据存储流程

(1)客户端Client连接MetaStore服务;

(2)MetaStore再去连接MySQL等关系型数据库来存取元数据。
2,存在的作用
当有了MetaStore服务后,就可以有多个客户端同时连接,且这些客户端不需要知道MySQL等数据库的用户名和密码,只需要连接MetaStore服务即可

3,MetaStore提供存储服务时,有三种不同的模式:

(1)MetaStore服务是否需要单独配置、单独启动?

(2)Metadata元数据是存储在内置库Derby中,还是第三方库MySQL等数据库中。
请添加图片描述
(1)内嵌模式
当MetaStore元数据存储采用内嵌模式时:

(1)优点:解压Hive安装包到bin/hive后,启动Hive即可使用MetaStore;(2)缺点:把Derby和MetaStore服务都嵌入在主Hive Server进程中,不适用于生产环境,原因:a)一个服务只能被一个客户端连接(如果用两个客户端以上就非常浪费资源);b)元数据不能共享。

(2)本地模式

当MetaStore元数据存储采用本地模式时:

(1)优点: 可以单独使用外部的数据库(MySQL), 元数据共享;(2)缺点: 相对浪费资源, MetaStore嵌入到了Hive进程中,每启动一次Hive服务,都内置启动了一个MetaStore。

(3)远程模式

当MetaStore元数据存储采用远程模式时:

(1)优点: 可以单独使用外部库(mysql) ,还可以共享元数据。可以连接MetaStore服务,也可以连接hiveserver2服务;(2)缺点: 需要注意如果想要启动hiveserver2服务,则先需要启动MetaStore服务。

4,启动MetaStore与HiveServer2

在hive安装的服务器上,首先启动MetaStore服务,然后启动hiveserver2服务。
(1)进入/export/server/apache-hive-3.1.2-bin/bin目录后,启动MetaStore服务,命令:

[root@node1 apache-hive-3.1.2-bin]# [nohup] ./hive --service metastore &

#启动hiveserver2服务
[root@node1 apache-hive-3.1.2-bin]# [nohup] ./hive --service hiveserver2 &
(a)查看进程是否开启,命令:

# 可以使用lsof命令查看对应进程是否开启
[root@node1 apache-hive-3.1.2-bin]# lsof -i:10000
COMMAND   PID USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
java    18804 root  520u  IPv6 266172      0t0  TCP *:ndmp (LISTEN)

(b)杀死进程[关闭Hive服务]时,命令:

kill -9 进程号

2,当进程启动不成功时,需要杀死所有已经启动的runjar程序,然后再开始重新启动

5,HiveServer2服务

Beeline是JDBC的客户端,通过JDBC协议和Hiveserver2服务进行通信,协议的地址是:jdbc:hive2://node1:10000。
使用Beeline客户端连接Hive时,命令:

(1)启动Beeline,进入hive的bin目录后:
./beeline(2)连接Hive
! connect jdbc:hive2://node1:10000
[root@node1 ~]# /export/server/hive/bin/beeline
Beeline version 3.1.2 by Apache Hive
beeline> ! connect jdbc:hive2://node1:10000
Connecting to jdbc:hive2://node1:10000
Enter username for jdbc:hive2://node1:10000: root
Enter password for jdbc:hive2://node1:10000:
Connected to: Apache Hive (version 3.1.2)
Driver: Hive JDBC (version 3.1.2)
Transaction isolation: TRANSACTION_REPEATABLE_READ
0: jdbc:hive2://node1:10000> 
6,Hive环境变量

1,Shell脚本执行方式有三种:
方式一:sh执行
格式: sh 脚本
注意: 需要进入脚本的所在工作目录,然后使用对应的sh命令来执行脚本,
这种执行方式,脚本文件不需要具有可执行权限。
2,相对路径执行
格式: ./脚本
注意: 需要先进入到脚本所在的目录,然后使用 ./脚本方式执行,
这种执行方式,必须保证脚本文件具有可执行权限。
3,方式三:绝对路径执行
格式: /绝对路径/脚本
注意: 需要使用脚本的绝对路径中执行,指的是直接
4,配置Hive的环境变量,命令:

echo 'export HIVE_HOME=/export/server/apache-hive-3.1.2-bin' >> /etc/profile
echo 'export PATH=$PATH:$HIVE_HOME/bin:$HIVE_HOME/sbin' >> /etc/profile
source /etc/profile

另外的,也可以把使用Vi把如下配置Hive环境变量的语句添加到/etc/profile结尾处:

# HIVE_HOME
export HIVE_HOME=/export/server/apache-hive-3.1.2-bin
export PATH=$PATH:$HIVE_HOME/bin:$HIVE_HOME/sbin
7,Hive使用

1,使用SQL操作Hive

(1)创建表CREATE TABLE test(id INT, name STRING, gender STRING);(2)插入数据INSERT INTO test VALUES(1, '肖战', '男'), (2, '周杰伦', '男'), (3, '迪丽热巴', '女');(3)查询数据SELECT gender, COUNT(*) AS cnt FROM test GROUP BY gender;

(1)验证SQL语句启动的MapReduce程序

打开YARN的WEB UI页面查看任务情况:http://node1:8088

(2)验证Hive的数据存储

Hive的数据存储在HDFS的:/user/hive/warehouse中。

4,数据仓库和数据库

(1)数据库DataBase,简称为DB
用于把数据结果给外部各类程序使用,侧重于增删查改。

(2)数据仓库Data Warehouse,可简写为DW或DWH
用于分析历史数据而存在,为企业提供决策支持。
2,数据库和数据仓库的区别,就是说:OLTP与OLAP的区别。
(1)OLTP联机事务处理

操作型处理,叫联机事务处理OLTP(On-Line Transaction Processing,),也可以称面向交易的处理系统。
OLTP是针对具体业务在数据库联机的日常操作,通常对少数记录进行查询、修改。用户较为关心操作的响应时间、数据的安全性、完整性和并发支持的用户数等问题。传统的数据库系统,常用于数据管理,比如对数据增删查改,属于操作型处理。

(2)OLAP联机分析处理

分析型处理,叫联机分析处理OLAP(On-Line Analytical Processing),一般针对某些主题的历史数据进行分析,支持管理决策。

3,值得注意的是,数据仓库的出现,并不是要取代数据库。

通常,数据仓库的主要特征有:

a)面向主题的(Subject-Oriented )

b)集成的(Integrated)

c)非易失的(Non-Volatile)[或(不可更新性)]

d)时变的(Time-Variant )
数据仓库是在数据库已经大量存在的情况下,为了进一步挖掘数据资源、为了决策需要而产生的。
4,主要区别如下:
A)数据库是面向事务的设计,数据仓库是面向主题设计的;

B)数据库一般存储业务数据,数据仓库存储的一般是历史数据;

C)数据库是为捕获数据而设计,数据仓库是为分析数据而设计

D)数据库设计是尽量避免冗余,一般针对某一业务应用进行设计,比如一张简单的User表,记录用户名、密码等简单数据即可,符合业务应用,但是不符合分析;而数据仓库在设计是有意引入冗余,依照分析需求,分析维度、分析指标进行设计

数仓的分层架构

存在意义:数据仓库出于对历史数据进行分析性报告、决策支持目的而创建的。目的是构建面向分析的集成化数据环境,为企业提供决策支持。
1,数据仓库中的数据源来自企业
(1)RDBMS关系型数据库—>业务数据
(2)log file----->日志文件数据

(3)爬虫数据
(4)其他数据
2,数据仓库的发展,大致经历了三个阶段:
a)简单报表阶段

解决一些日常的工作中业务人员需要的报表,以及生成一些简单的能够帮助领导进行决策所需要的汇总数据。这个阶段的大部分表现形式为数据库和前端报表工具。

b)数据集市阶段

根据某个业务部门的需要,进行一定的数据采集、整理,按照业务人员的需要,进行多维报表的展现,能够提供对特定业务指导的数据,并且能够提供特定的领导决策数据。

c)数据仓库阶段

按照一定的数据模型,对整个企业的数据进行采集、整理,并且能够按照各个业务部门的需要,提供跨部门的,完全一致的业务报表数据,能够通过数据仓库生成对对业务具有指导性的数据,同时,为领导决策提供全面的数据支持。
3,数据仓库的架构可分为三层
(1)源数据层(ODS):直接使用外部系统数据结构和数据,这是接口数据的临时存储区域,为后一步的数据处理做准备;

(2)数据仓库层(DW):也称为细节层,DW层的数据应该是一致的、准确的、干净的数据,即对源系统数据进行了清洗后的数据;

(3)数据应用层(DA或APP):前端应用直接读取的数据源,也是根据报表、专题分析需求而计算生成的数据。

4,ETL与ELT
数据仓库从各个数据源中,获取数据及在数据仓库内的数据转换和流动都可以认为是ETL(抽取Extract,转化Transform, 装载Load)的过程。
(1)ETL

先从数据源池中,抽取数据,并把数据保存在临时暂存数据库中(ODS)。

然后,执行转换操作,将数据结构化并转换为适合目标数据仓库(DW)系统的形式,然后将结构化数据加载到数据仓库中进行分析。
(2)ELT

使用ELT时,数据在从数据源中提取后立即加载。没有专门的临时数据库(ODS),这意味着数据会立即加载到单一的集中存储库中。

数据在数据仓库系统中进行转换,然后进行分析。大数据时代数仓这个特点很明显

5,数据库操作

1,HQL数据定义语言
数据定义语言 (Data Definition Language,DDL),指的是SQL语言集中对数据库内部的对象结构进行创建、删除、修改等操作。

其中,数据库对象包括有:数据库database(schema)、数据表table、视图view、索引index等。
核心语法:
(1)CREATE 创建

(2)ALTER 删除

(3)DROP 修改
2,创建数据库

create database [if not exists] 数据库名
[comment '解释说明']
[location '存储到HDFS路径名']
[with dbproperties (属性名='值', ...)];

指定文件夹下创建数据库

create database zuo location '/zuo';

3,查看数据库信息

desc database [extended] 数据库名;

(1)extended用于显示更多信息,比如位置路径等;

(2)查看数据库信息时,记得加上database。

查看正在使用哪个数据库


select current_database();

4,如果要查看创建数据库的语句时,命令:

show create database itcast;

5,删除库
DROP DATABASE语句用于删除数据库。语法:

drop database 数据库名 [restrict | cascade];

若要删除带有数据表的数据库zuo时,记得在语句结尾处添加cascade。
6,修改库
ALTER DATABASE语句可用于更改与Hive中的数据库关联的元数据信息。语法:

-- 修改数据库存储路径
alter database 数据库名 set location 存储路径名;-- 修改或新增数据库配置属性
alter database 数据库名 set dbproperties (属性名=值, ...);

使用alter语法来修改数据库的属性

alter database zuo set dbproperties('create_time'='21:15');
desc database extended zuo;

请添加图片描述

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

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

相关文章

leetcode每日一题-周复盘

前言 该系列文章用于我对一周中leetcode每日一题or其他不会的题的复盘总结。 一方面用于自己加深印象,另一方面也希望能对读者的算法能力有所帮助, 同时也希望能帮助同样坚持刷题的同学加深印象~ 该复盘对我来说比较容易的题我会复盘的比较粗糙&#…

clip4clip:an empirical study of clip for end to end video clip retrieval

广告深度学习计算:阿里妈妈智能创意服务优化使用CPU/GPU分离的多进程架构,加速阿里妈妈智能创意服务。https://mp.weixin.qq.com/s/_pjhXrUZVzFRtiwG2LhnkwCLIP4Clip: CLIP 再下一城,利用CLIP实现视频检索 - 知乎前言: OpenAI 的论…

ios 对话框UIAlertController放 tableview

//强弱引用 #define kWeakSelf(type)__weak typeof(type)weak##type type; -(void) showUIAlertTable {kWeakSelf(self)UIAlertController *alert [UIAlertController alertControllerWithTitle:NSLocalizedString("select_stu", nil) message:nil prefer…

Docker 和 Kubernetes:技术相同和不同之处

Docker和Kubernetes是当今最流行的容器化技术解决方案。本文将探讨Docker和Kubernetes的技术相似之处和不同之处,以帮助读者更好地理解这两种技术。 Docker和Kubernetes:当今最流行的容器化技术解决方案 在当今的IT领域,Docker和Kubernetes无…

ef core code first pgsql

在使用efcode来操作pgsql的时候,总有些基础配置流程项目建立完之后后面就很少用,总是忘掉,写个文档记忆一下吧。基于net 6.0。 1.创建一个mvc项目和一个EF类库 2.在类库里面安装依赖dll Microsoft.EntityFrameworkCore.Design 需要添加的…

ESP32 Arduino实战基础篇-使用中断和定时器

本教程介绍如何使用 PIR 运动传感器通过 ESP32 检测运动。在此示例中,当检测到运动(触发中断)时,ESP32 会启动计时器并打开 LED 并持续预定义的秒数。当计时器倒计时结束时,LED 自动关闭。 通过这个例子,我们还将探讨两个重要的概念:中断和定时器。 中断介绍 要使用 P…

【MySQL】表的增删改查(基础)

一、新增(Create) 先创建一张表: create table student (id int,sn int comment 学号,name varchar(20),email varchar(20));1.1 单行数据 全列插入 插入两条记录,value_list 数量必须和定义表的列的数量及顺序一致 insert i…

How to design a database storage model for water network information system

How to design a database storage model for water network information system 1、领域划分2、基础域2.1、概述2.2、E-R图2.3、SQL脚本 1、领域划分 序号中文名称英文名称代号备注1基础域basea012资产域assertsa023监测域monitora034水权域quotaa045灌溉域irrigationa056排涝…

矿区安全检查VR模拟仿真培训系统更全面、生动有效

矿山企业岗位基数大,生产过程中会持续有新入矿的施工人员及不定期接待的参观人员,下井安全须知培训需求量大。传统实景拍摄的视频剪辑表达方式有限,拍摄机位受限,难以生动表达安全须知的内容,且井下现场拍摄光线不理想…

三菱FX3U小项目—自锁控制与故障报警

目录 一、项目描述 二、IO口分配 三、项目程序 四、总结 一、项目描述 当按下启动按钮时,电机通电运转,当按下停止按钮时,电动机断电停止;当设备检修旋钮得电时,电动机停止并且故障指示灯闪烁1s;当电动…

【PyQt小知识 - 4】:QGroupBox分组框控件 - 边框和标题设置

QGroupBox QGroupBox 是 PyQt 中的一个小部件,用于创建一个带有标题的组框。 可以使用 QGroupBox 将相关控件分组并添加一个标题。 以下是一个使用 QGroupBox 的示例代码(示例一): from PyQt5.QtWidgets import * import sysa…

【MySql】12- 实践篇(十)

文章目录 1. 为什么临时表可以重名?1.1 临时表的特性1.2 临时表的应用1.3 为什么临时表可以重名?1.4 临时表和主备复制 2. MySql内部临时表使用场景2.1 union 执行流程2.2 group by 执行流程2.3 group by 优化方法 -- 索引2.4 group by 优化方法 -- 直接排序 3. Me…

【第2章 Node.js基础】2.7 Node.js 的流(一)可写流

🌈可写流 🚀什么是可写流 可写流是对数据被写入的目的地的一种抽象。 所有可写流都实现了 stream.Writable类定义的接口。 可写流的例子包括,也都是实现了可写流接口的双工流 客户端的 HTTP 请求、服务器的HTTP 响应、fs 的写入流、zlib…

Android Jetpack的组件介绍,常见组件解析

jetpack组件有哪些 Android Jetpack是一个集成Android应用程序组件的一站式解决方案。它使开发人员能够专注于他们的应用程序的真正创新部分,而不会受到Android平台特定的限制。Jetpack组件可分为四个类别: 架构组件(Architecture Componen…

从流程优化到经营提效,法大大电子签全面助力智慧零售升级

在新零售模式下,“商业综合体、百货商场、连锁商超、连锁便利店、线上电商平台”等各类商业零售企业借助数字化的手段来改造和重塑传统零售流程和逻辑,实现全面数字化转型,包括线上线下一体化、全场景覆盖、全链条联通、全渠道经营、客户服务…

【ASP.NET】Hello World

文章目录 1. 几个概念2. 搭建开发环境2.1 .NET SDK2.2 IDE & Editor 3 First Project3.1 步骤3.2 模板3.3 项目结构3.4 请求的处理流程 Reference Link 1. 几个概念 .NET 是一个平台,包括 .NET Framework、.NET Core、ASP.NET、C#等,可以构建桌面、W…

【python】Django——连接mysql数据库

笔记为自我总结整理的学习笔记,若有错误欢迎指出哟~ 【Django专栏】 Django——django简介、django安装、创建项目、快速上手 Django——templates模板、静态文件、django模板语法、请求和响应 Django——连接mysql数据库 Django——连接mysql数据库 连接MySQL数据库…

2023双十一爆冷收场,订单后暗藏这些电商痛点问题需要注意

打开某软件的瞬间,手不小心抖一下就进入了淘宝,而且无法第一时间准确找到关闭按钮。相信不少人都在这个双十一通过开屏广告为淘宝“贡献”至“超8亿”的访问量,更有网友辣评:“现在打开别的软件跳转淘宝的速度都比直接打开淘宝要快…

基于STM32婴儿床检测控制系统及源程序

一、系统方案 1、本设计采用STM32单片机作为主控器。 2、DHT11检测湿度,液晶OLED显示,声音检测声音,有声音或尿床,蜂鸣器报警。 3、手机APP可以控制音乐播放。 二、硬件设计 原理图如下: 三、单片机软件设计 1、首先…

新能源充电桩物联网应用之工业4G路由器

新能源充电桩是智慧城市建设中不可缺少且可持续发展的重要设施,而工业4G路由器物联网应用为其提供了更加高效、智能、实时的管理方式。充电桩通过工业4G路由器可以与充电运营商的管理中心建立稳定的连接,实现双向数据传输,为用户提供优质的充…