1.什么是Hive
Hive是一个基于Hadoop的一个数据仓库工具,是将结构化数据文件映射成为一个数据表,并提供类SQL的查询功能
2.Hive可以对数据进行存储与计算(与Hadoop关系)
数据存储依赖于HDFS
数据计算依赖于MapReduce
3.Hive的意义(目的)
在Hadoop是个好软件,但不好使用(学习成本高,坡度陡,难度大)的前提下
降低了程序员使用Hadoop的学习成本,降低了学习难度
4.Hive的特点
可扩展性:与集群的扩展性相同
延展性:Hive提供自定义函数接口,支持HQL语句直接调用java方法
容错性:节点出现问题SQL扔可完成执行
5.Hive架构
基本组成
用户接口:包括CLI、JDBC/ODBC、WebGUI。
CLI:shell命令行
JDBC/ODBC:是Hive的JAVA实现,与传统数据库JDBC类似
WebGUI:是通过浏览器访问Hive
元数据存储
解释器,编译器,优化器,执行器
6.元数据
描述数据的数据就是元数据
包括
表的名字
表的列
列的类型
通常是存储在关系数据库如mysql/derby中。Hive将元数据存储在数据库中。
7.Hive内部执行过程
解释器 —>编译器(会使用到元数据)—>优化器—>执行器
完成HQL查询语句从词法分析、语法分析、编译、优化以及查询计划的生成。生成的查询计划存储在HDFS中,并在随后由MapReduce调用执行。
8.Hive基本介绍
Hive中没有定义专门的数据格式,用户提供的数据是什么格式,Hive直接将数据拷贝到集群。不会对数据格式进行改变。
用户定义数据格式需要制定三个属性:
列分隔符(通常为空格、"\t"、"\x001")
行分隔符("\n")
读取文件数据的方法(Hive中默认有三个文件格式
TextFile,SequenceFileRCFile)
不会对数据本身进行任何修改,甚至不会对数据进行扫描
Hive中不支持对数据的改写和添加(在一个文本中添加新数据)
Hive在加载数据的过程中不会对数据中的某些Key建立索引
总结:Hive具有sql数据库的外表,但应用场景完全不同,Hive只适合用来做批量数据统计分析
9.Hive内的基本概念(数据模型)
DB:数据库
Table:表(内部表)
External Table:外部表
Partition:分区
Bucket:分桶
Hive支持的数据格式
可支持Text, SequenceFile ,ParquetFile,ORC格式RCFILE等
文章来自 大萝卜博客网 新人建站 求支持