千家信息网

10、Hive核心概念和架构原理

发表于:2024-11-22 作者:千家信息网编辑
千家信息网最后更新 2024年11月22日,1、 Hive核心概念和架构原理1.1、 Hive概念Hive由FaceBook开发,用于解决海量结构化日志的数据统计。Hive是基于Hadoop的数据仓库工具,可以将结构化数据映射为一张表,提供类似
千家信息网最后更新 2024年11月22日10、Hive核心概念和架构原理

1、 Hive核心概念和架构原理

1.1、 Hive概念

Hive由FaceBook开发,用于解决海量结构化日志的数据统计。

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

本质:将Hive SQL转化成MapReduce程序。

1.2、Hive与数据库的区别

对变项Hive数据库软件
查询语言HQLSQL
数据存储HDFSRaw Devce or Loal FS
执行器MapReduceExecutor
数据插入支持批量导入/单条插入支持单条或者批量导入
数据操作覆盖追加行级更新删除
处理数据规模
执行延迟
分区支持支持
索引0.8版本之后加入了索引支持复杂的索引
扩展性有限
数据加载模式读时模式(快)写时模式(慢)
应用场景海量数据查询实时查询

读时模式:Hive在加载数据到表中的时候不会校验.

写时模式:Mysql数据库插入数据到表的时候会进行校验.

总结:Hive只适合用来做海量离线的数据统计分析,也就是数据仓库。

1.3、Hive的优缺点

优点:操作接口采用了类SQL语法,提供快速开发的能力,避免了去写MapReduce;Hive还支持用户自定义函数,用户可以根据自己的需求实现自己的函数。

缺点:Hive不支持纪录级别的增删改操作;Hive查询延迟很严重;Hive不支持事务。

1.4、Hive架构原理

​ (1)用户接口:CLI(hive shell);JDBC(java访问Hive);WEBUI(浏览器访问Hive)

​ (2)元数据:MetaStore

元数据包括:表名、表所属的数据库(默认是default)、表的拥有者、列/分区字段,标的类型(表是否为外部表)、表的数据所在目录。这是数据默认存储在Hive自带的derby数据库中,推荐使用MySQL数据库存储MetaStore。

(3)Hadoop集群:

使用HDFS进行存储数据,使用MapReduce进行计算。

(4)Driver:驱动器

解析器(SQL Parser):将SQL字符串换成抽象语法树AST,对AST进行语法分析,像是表是否存在、字段是否存在、SQL语义是否有误。

编译器(Physical Plan):将AST编译成逻辑执行计划。

优化器(Query Optimizer):将逻辑计划进行优化。

执行器(Execution):把执行计划转换成可以运行的物理计划。对于Hive来说默认就是Mapreduce任务。

通过Hive**对数据进行数据分析过程**:

2、 Hive交互方式

需要先启动hadoop集群和MySQL服务

2.1、Hive交互shell

cd  /opt/bigdata2.7/hive (hive的安装路径,根据自己实际情况改变)
bin/hive

​ 可以在命令端口写上HQL语句:show databases;验证是否可用。

2.2、JDBC交互

输入hiveserver2相当于开启了一个服务端,查看hivesever2的转态

输入netstat  -nlp命令查看:

​ 运行hiveserver2相当于开启了一个服务端,端口号10000,需要开启一个客户端进行通信,所以打开另一个窗口,输入命令beeline.

Beeline连接方式:!connect jdbc:hive2://node1:10000

主意不要省略!

当然了hiveserver2服务端可以运行在后台:

nohup hiveserver2 &

3、 Hive数据类型

3.1基本数据类型

类型名称描述举例
booleanTrue/falseTrue
tinyint1字节的有符号整数1
Smallint2字节的有符号整数1
int4字节的有符号整数1
Bigint8字节的有符号整数1
Float4字节精度浮点数1.0
Double8字节精度浮点数1.0
String字符串(不设长度)"adcadfaf"
Varchar字符串(1-65355)"adfafdafaf"
Timestamp时间戳123454566
date日期20160202

3.2复合数据类型

类型名称描述举例
Array一组有序的字段,字段类型必须相同的array(元素1,元素2)Array(1,2,4)
Map一组无序的键值对map(k1,v1,k2,v2)Map('a',1,'b',2)
Struct一组命名的字段,字段类型可以不同struct(元素1,元素2)Struct('a',1,2,0)

​ (1)Array字段的元素访问方式:下标获取元素,下标从0开始

比如:获取第一元素:array[0]

(2)Map字段的访问方式:通过键获取值

比如:获取a这个key对应的value:map['a']

(3)struct字段的元素获取方式:

定义一个字段c的类型为struct(a int;b string)

获取a和b的值:

create table complex(     col1 array,     col2 map,     col3 struct     )

4、 Hive数据类型转换

4.1、隐式类型转换

​ 系统自动实现类型转换,不需要客户干预

如:tinyint可以转换成int,int可以转成bigint

所有整数类型、float、string类型都可以隐式转转换成double

tinyint、samllint、int都可以转成float

boolean不可以转成其他任何类型

4.2、手动类型转换

​ 可以使用cast函数显示的进行数据类型转换

​ 例如:cast('1' as int)把字符串'1'转成整数1

​ 如果强制转换类型失败,如执行cast('x' as int)表达式返回NULL。

数据 类型 字段 元素 支持 字节 数据库 整数 方式 模式 查询 字符 字符串 符号 存储 服务 函数 命令 海量 用户 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 自己搭建的服务器怎么连接域名 能否给出嵌入式软件开发流程 库存网络技术售后服务 服务器内存条上什么主板 软件开发进度持续中 可执行程序的免费使用的服务器 服务器都是绿灯是不是正常 数据库怎么表示身份证号 csgo两个服务器是互通的吗 甘肃网络安全集成 中行软件开发中心招聘人数 网络安全 日志留存 数据库修改表中时间语句 南昌服务器回收企业 城阳区定制软件开发公司有哪些 惠普服务器硬盘灯橙色 现代网络技术与课堂教学 软件开发公司不放假行吗 支撑与驱动软件开发 网络安全法 好处 计件工资系统用什么软件开发 软件开发无形资产投资有哪些 运行服务器支持者 jmeter数据库查询顺序 泰安荣军医院网络安全 星际公民怎么进人少的服务器 2020软件开发成本系数 软件开发项目提成项目经理 珠海工行软件开发 深圳开立医疗软件开发
0