首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Hadoop-Hive基础知识整理

一. Hive入门简介

1. Hive是什么

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

构建在Hadoop 之上的数据仓库;

使用HQL作为查询接口;

使用HDFS存储;

使用MapReduce计算;

本质是:将HQL转化成MapReduce程序.

基于其本质,也可以将Hive看成是一个SQL的解析引擎,但这样说并不全面,毕竟有时SQL也会不被解析的;

底层: HDFS负责存储数据;YARN负责进行资源管理;MapReduce负责处理数据;

2. Hive产生的目的

用于解决海量结构化日志的数据统计;

结构化日志: 有统一的规范

(1) 每一行数据就是一条数据;

(2) 很多列之间有统一的标识符进行分割;

3. 特点

操作接口采用类SQL语法,提供快速开发的能力(简单、容易上手);

避免了去写MapReduce,减少开发人员的学习成本;

统一的元数据管理,可与impala/spark等共享元数据;

灵活性和扩展性比较好:支持UDF,自定义存储格式等;数据存储在hdfs上,存储容量可以平滑扩展;

适合离线数据处理;hive本质是跑MapReduce程序,更适合离线数据处理;比如:日志分析,海量结构化数据离线分析…

Hive的执行延迟比较高,因此hive常用于数据分析的,对实时性要求不高的场合;

Hive优势在于处理大数据,对于处理小数据没有优势,因为Hive的执行延迟比较高。

HQL与SQL的区别:

HSQL:读时模式,也就是读数据做检查操作,比如检查表是否存在,字段是否存在,sql语法是否正确等;但在加载数据时,不对数据进行检查,仅仅是文件的复制或移动,所以加载数据会比较快.HSQL写快读慢.

SQL:写时模式,就是在加载数据时,会建立索引,字段检查等操作,这些操作都是为了提升查询的性能.所以SQL查询时比较快,而写入时比较慢.SQL读快,写慢.

UDF,UDAF与UDTF的区别:

UDF:用户自定义普通函数,一对一,用于select语句,对查询字段的结构化处理;比如format操作等;

UDAF:用户自定义聚合函数,多对一,group by

UDTF:用户自定义表生成函数,一对多.比如:split,分词

4. 基本概念

4.1 表的概念(类似关系型数据库)

4.2 HQL(类似SQL)

HQL的本质是通过Hive Engine转换为MapReduce任务.

二. Hive知识入门

Hive架构

2.1 架构组成

(1) 用户接口: Client

CLI(hive shell)、JDBC/ODBC(java访问hive),WEBUI(浏览器访问hive)

(2) 元数据: Metastore

元数据包括:表名、表所属的数据库(默认是default)、表的拥有者、列/

分区字段、表的类型(是否是外部表)、表的数据所在目录等;

默认存储在自带的derby数据库中,推荐使用采用MySQL存储Metastore;

(3) Driver

包含:解析器、编译器、优化器、执行器;

解析器:将SQL字符串转换成抽象语法树AST,这一步一般都用第三方工

具库完成,比如antlr;对AST进行语法分析,比如表是否存在、字段是否

存在、SQL语义是否有误(比如select中被判定为聚合的字段在group by中是

否有出现);

编译器:将抽象语法树AST编译生成逻辑执行计划;

优化器:对逻辑执行计划进行优化;

执行器:把逻辑执行计划转换成可以运行的物理计划。对于Hive来说,就是MR/TEZ/Spark.

(4) HDFS

使用HDFS存储数据.Hive本身不存在数据,Hive虽有表的定义但表是纯的逻辑表,数据是存在HDFS上的.

HIVE中的内容不支持改写和删除,适合读多写少的场景.

2.2 基础语法

(1) 查询数据库列表

(2) 使用指定的数据库

(3) 查询表列表

(4) 创建表

(5) 查询表

(6) 查询表的描述信息:

(7) 加载数据:

(8) 查询功能函数:

(9) 关闭CLI客户端命令:

(10) 在启动hive时设置配置属性信息

(11) 查看当前所有的配置信息

(12) 查看帮助文档

(13) 执行sql语句

(14) 执行指定的文件

(15) 在hive cli命令窗口中如何查看hdfs文件系统

(16) 在hive cli命令窗口中如何查看本地文件系统

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20180603G1D89A00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券