Apache Hive

大数据流程
在这里插入图片描述
数据分析计算(MapReduce)

Hive是基于Hadoop的一个数据仓库工具,可以将结构化的数据文件映射为一张数据库表,并提供类SQL查询功能。

数据仓库的主要特征
数据仓库面向主题的集成的非易失的时变的数据集合,用以支持管理决策。
数据仓库不产生数据 单纯的数据分析平台,集成化的数据分析平台
面向主题的:
主题是一个抽象的概念,是较高层次上企业信息系统中的数据综合、归类并进行分析利用的抽象。
集成的
通过对分散、独立、异构的数据库数据进行抽取、清理、转换和汇总便得到数据仓库的数据。
非易失的:
数据仓库的数据反映的是一段时间内的历史数据。数据仓库中一般有大量的查询操作,但修改和删除操作很少。通常只需要定期的加载和更新
时变性:
数据仓库的数据需要更新,以适应决策的需要。

数据仓库与数据库的区别:

数据库:操作型处理,叫联机事务处理OLTP(On-Line Transaction Processing),面向事务,面向业务,注重事务安全和客户的响应时间RDBMS(关系型数据库):mysql,oracle,注意和非关系型数据库(noSQL)的区别:redis mogodb
数据仓库:分析型处理。叫联机分析处理OLAP(On-Line Analytical Processing),面向分析的,apache hive。
数据仓库分层架构:
在这里插入图片描述
数据仓库的三层架构
ODS:源数据层 数据来源于各个不同的数据源 一般之间存在着差异 不用于直接分析 临时数据存储
DW:数据仓库层 数据来源于ODS经过ETL 数据格式统一规则的 利于分析
DA:数据应用层 数据来源于DW层分析好的模型数据 是最终使用消费的数据

数仓为什么要进行分层?
空间换时间,提高最终使用数据的效率
一步变多步 降低失败成本 不需要
进行数据集中格式统一便于分析

在这里插入图片描述

hive本质:可以把结构化的数据映射成一张表,映射成功后基于表 可以写sql进行数据分析。
在这里插入图片描述
Hive 使用Hadoop HDFS进行数据存储;
Hive 使用Hadoop MapReduce数据分析;
所以hive是基于hadoop的数据仓库的软件。

hive实现了sql类数据分析(hive sql -->mapreduce -->数据)

hive本质是数据仓库 进行数据分析的 延迟很高 无法实时交互 不利于业务事务的支持
hive不是大型数据库 也没有取代mysql 等关系型数据库 数据分析平台

hive的安装部署
hive不是分布式的软件 没有主从设备的角色存在
根据客户端的所在分为本地模式 远程模式

本地模式:客户端和hive服务在一台机器上
远程模式:客户端在其他机器上通过协议远程访问hive服务。

根据元数据存储介质不同,分为内置derby

hive建表时,没有使用row format语句 此时采用默认的分隔符\001进行分割(不可见分隔符)
在这里插入图片描述

使用Ctrl+v + Ctrl+a

hive的内外部表

/user/hive/warehouse/dbname.db 是hive默认存放数据的路径
create database --> /user/hive/warehouse/dbname.db

内部表:表的结构化数据文件放置在上述默认的路径下 不能随便更改
外部表:表的结构化文件可以位于hdfs的任意路径下 需要通过location指定清楚位置

内部表删除,表结构和数据都可以删除
外部表删除,只会删除表结构

入门:

远程方式使用hive:

安装好hive后,将hive的服务启动:

bin/hiveserver2

在这里插入图片描述

将hive复制到另一台服务器,

scp -r /export/servers/hive node03:/export/servers/

在node03服务器,进到bin目录下,进入hive客户端:执行

./beeline

然后连接远程hive,输入:其中10000是hive服务的端口号

! connect jdbc:hive2://node01:10000     //连接协议

然后输入 hive所在服务器的用户名和密码 root,123123

在这里插入图片描述

启动hadoop后用浏览器查看hadoop下的文件:
node01:50070

将hadoop下的文件跟hive的表结构映射起来就可以查到数据了。

在这里插入图片描述

在这里插入图片描述

把图二中的user.txt,放到图一中的路径下,就可以映射起来了。

hive的内外部表

/user/hive/warehouse 是hive默认存放数据的路径

**内部表:**表的结构化数据文件放置在上述默认的路径下 不能随便瞎放

**外部表:**表结构文件可以放在hdfs的任意路径下 但是需要通过location指定清楚位置。

create external table student_ext (sno int,sname string) row format delimited fields terminated by ',' location '/stu/student_ext';

建外部表关键字:external,location
location 后边的路径具体到表结构,否则如果没有数据,浏览器上是不显示的。如果没有具体到表结构,不用担心,把数据传上去,它会自动刷新。它只是默认不显示。

DDL语句

desc formatted table_name;  //查看表信息

table type:manager_table(内部表)/extenal_table(外部表);

DML语句

load 数据加载 把数据从其他路径下移动到hive建表的指定路径下
因为外部表的路径可以位于hdfs的任意路径不需要指定,

load data local "" 中local指的是hive所在服务器的本地文件系统
从本地加载数据的时候 本质上是复制操作 hadoop fs -put

load data inpath "" 位于hdfs文件系统
从hdfs加载数据的时候 本质上是移动操作 hadoop fs -mv

hive建议:针对数据的导入 最好使用load命令加载,不直接使用hadoop fs 操作

当使用count函数时,启动可以加快执行效率。
hive智能本地模式:

set hive.exec.mode.local.auto=true;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值