Hive基础笔记(架构、运行过程、元数据、数据类型)

2019-10-30  本文已影响0人  AceCream佳

接着上次的hive安装配置https://www.jianshu.com/p/2f284bd01344,这次记录别的。

那Hive到底能干啥??

基于Hadoop的数据仓库,可以把结构化的数据文件映射为一张表,然后提供类SQL的查询功能、
本质是把HQL转化为MR程序,当然这个MR可以被Spark或者Flink代替。

Hive架构

hive架构

这个Metadata配置存在mysql里面,其实客户端是先找了MetaData,然后再根据定位去HDFS里访问DataNode。
然后里面有好几个器,这个是Hive主要做的事,顺序:解析器->编译器->优化器->执行器
1.解析器看SQL语法,语法通过了去编译器。
2.编译器负责翻译,把HQL翻译成MR任务,然后交给优化器。
3.优化器对MR任务进行优化。
4.最后交给执行器执行任务。

Hive运行过程

写:
用户创建一个Table,通过映射关系在HDFS中创建数据文件,MetaData中记录对应文件的path,根据这个,记录到Hive的元数据中。

读:
用户写SQL,然后这边其实是先访问元数据,找到HDFS文件位置。整个过程如上面架构中写的。

元数据Metadata

Hive对应Mysql元数据的位置是一个默认叫做metastore的数据库。
这里面比较重要的表:DBS、TBLS、PARTITONS、PARTITONS_*
DBS记录的是库,TBLS记录的是表,另外那几个是分区信息。

测一下远程连接
在hive的bin目录下有一个beeline,他是在linux系统里启动一个hive的jdbc的连接客户端。
在启动它之前,我们要先启动一下hiveserver2

 nohup hive --service hiveserver2 2>&1 &

启动beelin之后可以测一下远程连接,不过想要远程连接hadoop需要在hadoop的core-site.xml配置一下:

<property>
  <name>hadoop.proxyuser.hadoop.hosts</name>
  <value>*</value>
</property>
<property>
  <name>hadoop.proxyuser.hadoop.groups</name>
 <value>*</value>
</property>

由于我linux用户是hadoop,所以name那里,proxyuser写的就是hadoop了,这么配好之后,就可以远程了,否则会报错。
启动beeline。然后执行:

> !connect jdbc:hive2://Master:10000

会让我们输入密码,这个时候输入就行了,我用户hadoop,密码没设置。

然后提示我们成功了!默认的事务隔离级别是重复读。可以看一下数据库:

> show databases;

基本数据类型

基本数据类型

String类型相当于varchar,理论上它能存2G的字符数。

集合数据类型

集合类型

啊,这个就是你想象中的,Array和Map就是你脑海里java里面的Array和Map,Struct就是C里面的Struct

类型转换

Hive不能反向转化。
隐式类型转化规则:
1.tinyint能转成int,int能转成bigint
2.整数类型,包括纯数字的string能隐式转成double
3.tinyint、smallint、int能转为float
4.boolean类型不能转化为任何类型

上一篇下一篇

猜你喜欢

热点阅读