HIVE

作者: 小帅明3号 | 来源:发表于2020-10-20 22:34 被阅读0次

Hive是Facebook为了解决海量⽇志数据的统计分析⽽开发的基于Hadoop的⼀个数据仓库⼯具(后来开源给了Apache软件基⾦会),可以将结构化的数据⽂件映射为⼀张数据库表,并提供类SQL查询功能.HQL。

本质上:将HQL语句转换为MapReduce任务进⾏运⾏(转化流程如下)

主要用途:离线数据分析,比直接使用MapReduce开发效率高效

Hive的优缺点

1)优点

1.操作接⼝采⽤类SQL语法,避免了写MapReduce程序,简单易上⼿,减少开发⼈员学习成本

2.在数据处理⽅⾯,Hive语句最终会⽣成MapReduce任务去计算,常⽤于离线数据分析,对数据实时性要求不⾼的场景

3.在数据存储⽅⾯,它能够存储很⼤的数据集,并且对数据完整性、格式要求并不严格

4.在延展性⽅⾯,Hive⽀持⽤户⾃定义函数,⽤户可以根据⾃⼰的需求来实现⾃⼰的函数

2)缺点

1.Hive的HQL本身表达能⼒有限,不能够进⾏迭代式计算,在数据挖掘⽅⾯也不擅⻓

2.Hive操作默认基于MapReduce引擎,延迟⾼,不适⽤于交互式查询,因此智能化程度低,并且基于SQL调优困难,粒度较粗

Hive架构

1.⽤户接⼝:Client CLI(hive shell)、JDBC/ODBC(java 访问 hive)、WEBUI(浏览器访问 hive)

2.元数据:Metastore 元数据包括:表名、表所属的数据库(默认是 default)、表的拥有者、列/分区字段、表的类型(是否是外部表)、表的数据所在⽬录等;

3.Hadoop 使⽤ HDFS 进⾏存储,使⽤ MapReduce 进⾏计算。

4.驱动器:Driver

(1)解析器(SQL Parser):将 SQL 字符串转换成抽象语法树 AST,这⼀步⼀般都⽤第三⽅⼯具库完

成,⽐如 antlr;对 AST 进⾏语法分析,⽐如表是否存在、字段是否存在、SQL语义是否有误。

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

(3)优化器(Query Optimizer):对逻辑执⾏计划进⾏优化。

(4)执⾏器(Execution):把逻辑执⾏计划转换成可以运⾏的物理计划。对于 Hive 来说,就是MR/Spark。

Hive 运⾏机制如下图:

Hive 通过给⽤户提供的⼀系列交互接⼝,接收到⽤户的指令(SQL),使⽤⾃⼰的 Driver,

结合元数据(MetaStore),将这些指令翻译成 MapReduce,提交到 Hadoop 中执⾏,最后,将执⾏返回的结果输出到⽤户交互接⼝。

Hive与传统数据库对⽐

Hive ⽤于海量数据的离线分析。

Hive 具有sql数据库的外表,但应⽤场景完全不同,Hive 只适⽤于批量数据统计分析。

更直观的对⽐图如下

Hive数据模型

Hive 的数据模型主要有以下四种

内部表与外部表的区别

类型隐式转换

显式转换(CAST,convert)

CAST的语法为cast(value AS TYPE)

如果将浮点型的数据转换成int类型的,内部操作是通过round()或者floor()函数来实现的,⽽不是通过cast实现!

对于BINARY类型的数据,只能将BINARY类型的数据转换成STRING类型。如果你确信BINARY类型数据是⼀个数字类型(a number),这时候你可以利⽤嵌套的cast操作。

对于Date类型的数据,只能在Date、Timestamp以及String之间进⾏转换。下表将进⾏详细的说明:

convert(数据类型,表达式)

使⽤多字符作为分隔符

使⽤MultiDelimitSerDe的⽅法来实现:

CREATE TABLE test_MultiDelimit(id int, name string ,tel string)

ROW FORMAT SERDE 'org.apache.hadoop.hive.contrib.serde2.MultiDelimitSerDe'

WITH SERDEPROPERTIES ("field.delim"="##")

STORED AS TEXTFILE;

使⽤RegexSerDe的⽅法实现:
RegexSerDe 仅⽀持字符串类型的,不能有其他类型

CREATE TABLE test1(id string, name string ,tel string)

ROW FORMAT SERDE 'org.apache.hadoop.hive.contrib.serde2.RegexSerDe'

WITH SERDEPROPERTIES ("input.regex" = "^(.*)\\#\\#(.*)$")

STORED AS TEXTFILE;

相关文章

  • 数据仓库Hive

    Hive产生背景 Hive概述 HIve体系架构 Hive部署架构 Hive和RDBMS区别 Hive部署以及快速...

  • 数据查询-Hive基础

    outline 什么是Hive 为什么需要Hive Hive的架构 Hive的常用操作 什么是Hive Hive由...

  • 大数据知识 | hive初识

    hive简介 hive架构 hive是什么 官网这样说:https://hive.apache.org/ hive...

  • Hive | Hive 安装详解

    一、Hive 介绍 二、准备工作 三、Hive下载 四、Hive 安装 五、Hive 启动 一、Hive 介绍 H...

  • Hive日常使用

    hive 创建表: hive 执行: =========================hive 调用Python...

  • Hive常用的几种交互操作

    查看hive下的交互命令方式 -help(hive 外) 命令:bin/hive -helpusage: hive...

  • 【Hive】

    Hive的安装 Hive官网地址 http://hive.apache.org/[http://hive.apac...

  • Hive进阶

    hive配置,命令 hive查询显示列名 hive默认分隔符 \001 hive命令行中查看当前hive环境变量 ...

  • Hive 入门

    Hive官网 Hive概述 Hive 的底层执行引擎有 :MapReduce,Tez,Spark- Hive on...

  • 大数据开发之Hive优化篇2-Hive的explain命令

    备注:Hive 版本 2.1.1 一.Hive explain命令概述 Hive的explain命令用来看Hive...

网友评论

      本文标题:HIVE

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