美文网首页
Hive基础笔记(架构、运行过程、元数据、数据类型)

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

作者: AceCream佳 | 来源:发表于2019-10-30 11:25 被阅读0次

    接着上次的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类型不能转化为任何类型

    相关文章

      网友评论

          本文标题:Hive基础笔记(架构、运行过程、元数据、数据类型)

          本文链接:https://www.haomeiwen.com/subject/uhlovctx.html