2.Apache Hive

news2024/12/27 11:10:35

Apache Hive概述
Apache Hive是一款建立在Hadoop之上的开源数据仓库系统,可以将存储在Hadoop文件中的结构化、半结构化数据文件映射为一张数据库表,基于表提供了一种类似SQL的查询模型,称为Hivev查询语言(HQL),用于访问和分析存储在Hadoop文件中的大型数据集。

Hive核心是将HQL转换为MapReduce程序,然后将程序提交到Hadoop集群执行。
Hive由Facebook实现并开源。

使用Hive处理数据的好处
操作接口采用类SQL语法,提供快速开发的能力
避免直接写MapReduce,减少开发人员的学习成本
支持自定义函数,功能扩展很方便
背靠Hadoop,擅长存储分析海量数据集

用户专注于编写HQL,Hive将其转换成MapReduce程序完成对数据的分析

1.Apache Hive架构、组件

1.1 组件

用户接口
包括CLI、JDBC/ODBV、WrbGUI

元数据存储
通常是存储在关系数据库如mysql/derby中。

Driver驱动程序
包括语法解析器、计划编译器、优化器、执行器

执行引擎
Hive本身并不直接处理数据文件。而是通过执行引擎处理。当下Hive支持MapReduce、Tez、Spark3三种执行引擎

1.2 Hive数据模型

Data Model概念
数据模型:用来秒数数据、组织数据和对数据进行操作,是对现实世界数据特征的描述
Hive的数据模型类似于RDBMS库表结构,此外还有自己特有模型
Hive中的数据可以在粒度级别上分为三类:表、分区、分桶

数据库
Hive的数据都是存储在HDFS上的,默认有一个根目录,在hive-site.xml中,由参数hive.metastore.warehouse.dir指定。默认值为/user/hive/warehouse

Hive和MySQL对比

Apache HiveMysql
定位数据仓库数据库
使用场景HQLSQL
数据存储HDFSLocal FS
执行引擎MR。Tez、SparkExcutor
执行延迟
处理数据规模
常见操作导入数据、查询增删改查

1.3 元数据

Hive Metadata
元数据就是描述数据的数据。
Hive元数据就是表和文件之间的各种对应关系
Hive元数据存储在关系型数据库中。如hive内置的Derby、或者第三方如MySQL等。

Hive Metastore
Metastore即元数据服务。Metastore服务的作用是管理metadata元数据,对外暴露服务地址,让各种客户端通过链接metastore服务,由metastore再去连接MySQL再去连接MySQL数据库来存取元数据。

metastore配置方式
metastore服务配置有3中模式:内嵌模式、本地模式、远程模式(推荐)

内嵌模式地址模式远程模式
Metastore单独配置、启动
Metadata存储介质DerbyMysqlMysql

1.4 Hive部署实战(未操作)

安装前准备

  • 服务器基础环境:集群时间同步、防火墙关闭、主机Host映射、免密登录、JDK安装
  • Hadoop集权健康可用:启动Hive之前必须先启动Hadoop集群。特别要注意,徐等待HDFS安全模式关闭之后在运行Hive

Hadoop与Hive整合
因为Hive需要把数据存储在HDFS上,并且通过MapReduce作为执行引擎处理数据
因此需要在Hadoop中添加相关配置属性,以满足Hive在Hadoop上运行
修改Hadoop中core-site.xml,并且hadoop集群同步配置文件,重启生效

<!-- 整合hive -->
<property>
    <name>hadoop.proxyuser.root.hosts</name>
    <value>*</value>
</property>
<property>
    <name>hadoop.proxyuser.root.groups</name>
    <value>*</value>
</property>

内嵌模式
内嵌模式特征:不需要安装数据库,不需要配置启动Metastore服务,解压安装包初始化即可测试Hive

本地模式
本地模式特征:需要安装数据库MySQL来存储元数据,但是不需要配置启动Metastore服务。

远程模式
特点:需要安装MySQL来存储Hive元数据,需要单独配置启动Metastore服务

1.5 Hive命令行客户端

bin/hive、bin/beeline
第一代: H I V E H O M E / b i n / h i v e ,不推荐使用第二代: HIVE_HOME/bin/hive,不推荐使用 第二代: HIVEHOME/bin/hive,不推荐使用第二代:HIVE_HOME/bin/beeline,官方推荐使用,更安全

Beeline在嵌入式和全程模式下均可工作
在嵌入式模式下,它运行嵌入式Hive;远程模式下beeline通过Thrift连接到单独的HiveServer2服务上。

HiveServer、HiveServer2都是Hive自带的两种服务,允许客户端在不启动CLI(命令行)的情况下对Hive中的数据进行操作,且两个都允许远程客户端使用多种编程语言如java,python项hive提交请求,取回结果。
HiveServer已经废弃,HiveServer2支持多客户端的并发和身份认证,旨在未开放API客户端如JDBC/ODBC提供更好的支持。

关系梳理
img

Bin/hive客户端使用只需启动Metastore,而使用bin/beeline启动HiveServer2之前必须先启动metastore

1.6 Hive初体验

Hive使用和MySQL的差别

  • Hive SQL语法和标准SQL很类似,使得学习成本降低不少
  • Hive底层是通过MapReduce执行的数据插入动作,所以速度很慢
  • 如果大数据集一条一条插入的话非常不显示的,成本极高
  • Hive应该具有自己特有的数据插入方式,结构化文件映射成表

Hive将结构话数据映射成为表
在Hive中创建表跟结构化文件映射成功,需要注意以下几个问题:

  • 创建表时,字段顺序、字段类型要和文件中保持一致
  • 如果类型不一致,hive会尝试转换,但时不保证转换成功。不成功显示null
  • 文件好像要放置在Hive表对应的HDFS目录,值得探讨
  • 建表时好像要根据文件内容指定分隔符,值得探讨
    上述问题都是Hive的各个知识点,有待于我们接下来不断深入学习

使用Hive进行小数据分析

  • Hive底层的确是通过MapReduce执行引擎来处理数据的
  • 执行完一个MapReduce程序需要的时间不短
  • 如果是小数据集,使用hive进行分析将得不偿失,延迟很高
  • 如果是大数据集,使用hive进行分析,底层MapReduce分布式计算很爽

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

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

相关文章

SpringBoot3之GraalVM之Windows详细安装及使用教程

配置Maven环境变量 我直接使用的是IDEA plugins文件夹下的maven 新建MAVEN_HOME环境变量 Path环境变量追加 %MAVEN_HOME%\bin安装Visual Studio Community 因为GraalVM需要调用操作系统的底层工具&#xff0c;而Windows底层工具是VisualStudio&#xff0c;所以我们要先下载…

2022年12月份青少年软件编程Python等级考试试卷六级真题(含答案)

一、单选题(共25题&#xff0c;共50分) 1.数据文件“abc.txt”中包含若干个英文单词&#xff0c;如图所示&#xff1a; 读取文件“abc.txt”中数据的Python程序段如下&#xff1a; file abc.txt word_b [] for word in open(file):if word[0:1] a and len(word)>4:wo…

Flink报错大全

1.flink版本由1.13.6提升到1.15.2 maven jar依赖问题 官方因为1.15.2弃用了2.11版本的scala,jar的命名也发生改变,部分默认的2.12版本的scala不用再特声明 1.15.2版本maven依赖 <repositories><repository><id>aliyunmaven</id><name>阿里云…

构建交互式颜色选择器:介绍Gradio的ColorPicker模块和方法

❤️觉得内容不错的话&#xff0c;欢迎点赞收藏加关注&#x1f60a;&#x1f60a;&#x1f60a;&#xff0c;后续会继续输入更多优质内容❤️ &#x1f449;有问题欢迎大家加关注私戳或者评论&#xff08;包括但不限于NLP算法相关&#xff0c;linux学习相关&#xff0c;读研读博…

环二肽试剂:Cyclo(-Hyp-Gly),环二肽含有一个六元环结构,结构稳定

编辑作者|陕西新研博美生物科技有限公司​ 英文名称&#xff1a;Cyclo(-Hyp-Gly) 规格标准&#xff1a;1g、5g、10g CAS&#xff1a;N/A 分子式&#xff1a;C7H10N2O3 分子量&#xff1a;170.17Cyclo(-Hyp-Gly)结构式&#xff1a; 反应机理&#xff1a; Cyclo(-Hyp-Gly)环二肽…

【vscode设置默认浏览器为google,配置默认浏览器没有google,VS Code 报Windows找不到文件‘chrome‘】

问题描述 VS Code 报Windows 找不到‘chrome’ 项目启动ctar鼠标左键快捷打开并没有使用默认浏览器 并且自己去浏览器配置并提供完整的选项 解决方案&#xff1a; 网上有很多其他的答案不过对我都没有 最后解决是在google里配置 不是默认浏览器会有个按钮 点一下就跳转到系统…

设计模式第19讲——命令模式(Command)

目录 一、什么是命令模式 二、角色组成 三、优缺点 四、应用场景 4.1 生活场景 4.2 java场景 五、代码实现 5.0 代码结构 5.1 抽象命令&#xff08;Command&#xff09;——Command 5.2 接收者&#xff08;Receiver&#xff09;——Chef 5.3 具体命令&#xff08;Co…

第十六章、Spring AOP开发中的一个坑

坑&#xff1a;在同⼀个业务类中&#xff0c;进⾏业务⽅法间的相互调⽤&#xff0c;只有最外层的⽅法,才是加⼊了额外 功能的(内部的⽅法&#xff0c;通过普通的⽅式调⽤&#xff0c;都调⽤的是原始⽅法)。如果想让内层的⽅法也 调⽤代理对象的⽅法&#xff0c;就要实现Appicat…

如何在SQL Server中实现Ungroup操作

概要 我们经常在SQL Server中使用group by语句配合聚合函数&#xff0c;对已有的数据进行分组统计。本文主要介绍一种分组的逆向操作&#xff0c;通过一个递归公式&#xff0c;实现ungroup操作。 代码和实现 我们看一个例子&#xff0c;输入数据如下&#xff0c;我们有一张产…

【需求实现】Tensorflow2的曲线拟合(二):进度条简化

文章目录 导读普通的输出方式上下求索TensorBoard是个不错的切入点与Callback参数对应的Callback方法官方的内置Callback官方进度条简单的猜测与简单的验证拼图凑齐了&#xff01; 导读 在训练模型的过程中往往会有日志一堆一堆的困扰。我并不想知道&#xff0c;因为最后我会在…

C# Excel表列名称

168 Excel表列名称 给你一个整数 columnNumber &#xff0c;返回它在 Excel 表中相对应的列名称。 例如&#xff1a; A -> 1 B -> 2 C -> 3 … Z -> 26 AA -> 27 AB -> 28 … 示例 1&#xff1a; 输入&#xff1a;columnNumber 1 输出&#xff1a;“A”…

Unity与Android交互(4)——接入SDK

【前言】 unity接入Android SDK有两种方式&#xff0c;一种是把Unity的工程导出google project的形式进行接入&#xff0c;另一种是通过把Android的工程做成Plugins的形式进行接入。我们接入SDK基本都是将SDK作为插件的形式接入的。 对我们接入SDK的人来说&#xff0c;SDK也是…

一文了解PoseiSwap的质押系统

PoseiSwap 正在向订单簿 DEX 领域深度的布局&#xff0c;并有望成为订单簿 DEX 领域的早期开创者。

jmeter发送请求的request body乱码问题解决

JMeter的Put请求&#xff0c;响应结果中文出现乱码的解决方法 原文地址&#xff1a; http://www.taodudu.cc/news/show-808374.html?actiononClick

【云原生丶Kubernetes】从应用部署的发展看Kubernetes的前世今生

在了解Kubernetes之前&#xff0c;我们十分有必要先了解一下应用程序部署的发展历程&#xff0c;下面让我们一起来看看&#xff01; 应用部署的发展历程 我们先来看看应用程序部署的3个阶段&#xff1a;从物理机部署到虚拟机部署&#xff0c;再到容器化部署&#xff0c;他们之…

Jenkins服务器连接JMeter分布式中的test-master

Jenkins想要连接test-master就要通过代理 将下载好的agent.jar传输到test-master机器上的/usr/local&#xff08;实际上任何目录都可以&#xff09;下 然后我们在/usr/local目录下输入&#xff1a; &#xff08;这个是在Jenkins页面自己生成的命令&#xff09; java -jar ag…

SQL频率低但笔试会遇到: 触发器、索引、外键约束

一. 前言 在SQL面笔试中&#xff0c;对于表的连接方式&#xff0c;过滤条件&#xff0c;窗口函数等肯定是考察的重中之重&#xff0c;但是有一些偶尔会出现&#xff0c;频率比较低但是至少几乎会遇见一两次的题目&#xff0c;就比如触发器&#xff0c;索引和外键约束&#xff0…

C++ 教程

C 教程 C 是一种高级语言&#xff0c;它是由 Bjarne Stroustrup 于 1979 年在贝尔实验室开始设计开发的。C 进一步扩充和完善了 C 语言&#xff0c;是一种面向对象的程序设计语言。C 可运行于多种平台上&#xff0c;如 Windows、MAC 操作系统以及 UNIX 的各种版本。 本教程通过…

Stanford点云公开数据集:S3DIS

S3DIS (Stanford Large-Scale 3D Indoor Spaces Dataset) 是斯坦福大学提供的大场景室内3D点云数据集&#xff0c;包含6个教学和办公Area&#xff0c;总共有695,878,620个带有色彩信息以及语义标签的3D点。 该数据集目前已经被包含在一个更大的Full 2D-3D-S Dataset当中&#x…

深入探讨Seata RPC模块的设计与实现

在Seata中&#xff0c;TM,RM与TC都需要进行跨进程的网络调用&#xff0c;通常来说就会需要RPC来支持远程调用&#xff0c;而Seata内部就有自身基于Netty的RPC实现&#xff0c;这里我们就来看下Seata是如何进行RPC设计与实现的 RPC整体设计 抽象基类AbstractNettyRemoting 该类是…