hive(基于hadoop)知识点

hive(基于hadoop)知识点,第1张

hive(基于hadoop)知识点

Hive是基于Hadoop的数据仓库工具,可对存储在HDFS上的文件中的数据集进行数据整理、特殊查询和分析处理,提供了类似于SQL语言的查询语言–HiveQL,可通过HQL语句实现简单的MR统计,Hive将HQL语句转换成MR任务进行执行。
一、概述
1-1 数据仓库概念
数据仓库(Data Warehouse)是一个面向主题的(Subject Oriented)、集成的(Integrated)、相对稳定的(Non-Volatile)、反应历史变化(Time Variant)的数据集合,用于支持管理决策。

数据仓库体系结构通常含四个层次:数据源、数据存储和管理、数据服务、数据应用。

数据源:是数据仓库的数据来源,含外部数据、现有业务系统和文档资料等;
数据集成:完成数据的抽取、清洗、转换和加载任务,数据源中的数据采用ETL(Extract-Transform-Load)工具以固定的周期加载到数据仓库中。
数据存储和管理:此层次主要涉及对数据的存储和管理,含数据仓库、数据集市、数据仓库检测、运行与维护工具和元数据管理等。
数据服务:为前端和应用提供数据服务,可直接从数据仓库中获取数据供前端应用使用,也可通过OLAP(onLine Analytical Processing,联机分析处理)服务器为前端应用提供负责的数据服务。
数据应用:此层次直接面向用户,含数据查询工具、自由报表工具、数据分析工具、数据挖掘工具和各类应用系统。

1-2 传统数据仓库的问题

无法满足快速增长的海量数据存储需求,传统数据仓库基于关系型数据库,横向扩展性较差,纵向扩展有限。
无法处理不同类型的数据,传统数据仓库只能存储结构化数据,企业业务发展,数据源的格式越来越丰富。
传统数据仓库建立在关系型数据仓库之上,计算和处理能力不足,当数据量达到TB级后基本无法获得好的性能。

1-3 Hive

Hive是建立在Hadoop之上的数据仓库,由Facebook开发,在某种程度上可以看成是用户编程接口,本身并不存储和处理数据,依赖于HDFS存储数据,依赖MR处理数据。有类SQL语言HiveQL,不完全支持SQL标准,如,不支持更新 *** 作、索引和事务,其子查询和连接 *** 作也存在很多限制。

Hive把HQL语句转换成MR任务后,采用批处理的方式对海量数据进行处理。数据仓库存储的是静态数据,很适合采用MR进行批处理。Hive还提供了一系列对数据进行提取、转换、加载的工具,可以存储、查询和分析存储在HDFS上的数据。
hive定义:
hive是由Facebook开源用于解决海量结构化日志的数据统计;
hive是基于hadoop的一个数据仓库工具,将结构化的数据文件映射为一张表,并提供类SQL查询功能

hive优缺点:
优点:
1) *** 作接口采用类 SQL 语法,提供快速开发的能力(简单、容易上手);
2)避免了去写 MapReduce,减少开发人员的学习成本;
3)Hive 的执行延迟比较高,常进行大数据分析,并对延时要求不高的工作;
4)Hive 支持用户自定义函数,用户可以根据自己的需求来实现自己的函数。
缺点:
1)Hive 的 HQL 表达能力有限,有些复杂运算无法表达(如迭代算法)
2)Hive 的效率比较低,只能做高延时的数据分析
3)hive粒度较粗,调优比较困难

hive架构:
Hive对外提供了三种访问方式,包括Web UI,CLI(Client Line Interface)和Thrift协议(支持JDBC/ODBC),而在Hive后端,主要包括三个服务组件构成,如下所示:
(1)驱动器
与关系型数据库的查询引擎类似,Driver实现了SQL解析,生成逻辑计划,物理计划,查询优化与执行等,它的输入是SQL语句,输出为一系列分布式执行程序(可以为MapReduce,Tez或Spark等)。
(2)metastore
Hive metastore是管理和存储元信息的服务,它保存了数据库的基本信息以及数据表的定义等,为了能够可靠地保存这些元信息,Hive metastore一般将它们持久化到关系型数据库中,默认采用了嵌入式数据库Derby(数据存放在内存中),用户可以根据需要启用其他数据库,比如MySQL。
(3)Hadoop
hive和数据库的区别:
Hive 是建立在 Hadoop 之上的,所有 Hive 的数据都是存储在 HDFS 中的。而数据库则可以将数据保存在块设备或者本地文件系统中。

hive元数据包括哪些,存在哪里:
元数据的存储主要有两种方式:第一种是使用hive自带的derby数据库进行元数据的存储;第二种是使用mysql数据库来进行hive元数据的存储;

hive基本数据类型&&复杂数据类型
基础数据类型包括:TINYINT,SMALLINT,INT,BIGINT,BOOLEAN,FLOAT,DOUBLE,STRING,BINARY,TIMESTAMP,DECIMAL,CHAR,VARCHAR,DATE。
复杂数据类型:
Array(1,2,3,4) 装的数据类型是一样的
Map(‘a’,1,‘b’,c) key的类型一样
Struct(‘a’,1,2,34,4)装的数据是完全混乱

内部表外部表区别:
内部表数据由Hive自身管理,外部表数据由HDFS管理;
内部表数据存储的位置是hive.metastore.warehouse.dir(默认:/user/hive/warehouse),外部表数据的存储位置由自己制定(如果没有LOCATION,Hive将在HDFS上的/user/hive/warehouse文件夹下以外部表的表名创建一个文件夹,并将属于这个表的数据存放在这里);
删除内部表会直接删除元数据(metadata)及存储数据;删除外部表仅仅会删除元数据,HDFS上的文件并不会被删除;
对内部表的修改会将修改直接同步给元数据,而对外部表的表结构和分区进行修改,则需要修复.

往表中添加数据的5种方式:
1:直接向分区表中插入数据
2:通过查询插入数据
3:多插入模式
4:查询语句中创建表并加载数据
5:创建表时通过location指定加载数据路径

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/zaji/5634716.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-15
下一篇 2022-12-16

发表评论

登录后才能评论

评论列表(0条)

保存