hive学习1(hive基本概念)
hive基本概念
hive简介
hive是什么
Hive是基于Hadoop的一个数据仓库工具,可以将结构化的数据文件映射为一张数据库表,并提供类SQL查询功能。
为什么使用hive
1)简单易上手。提供了类sql查询语言HQL,提供快速开发的能力。
2)避免了去写MapReduce,减少开发人员的学习成本。
3)统一的元数据管理(HCalalog)。可与pig,presto等共享。
4)为超大数据集设计的计算/扩展能力。MR作为计算引擎,HDFS作为存储系统。
hive的特点
可扩展
Hive可以自由的扩展集群的规模,一般情况下不需要重启服务。延展性
Hive支持用户自定义函数,用户可以根据自己的需求来实现自己的函数。容错
良好的容错性,节点出现问题SQL仍可完成执行。
hive的系统架构
hive基本组成
1)用户接口
- CLI,JDBC/ODBC,WebUI
2)元数据存储(matastore)
- 默认存储在自带的数据库derby中,线上使用时一般换为MySQL
3)驱动器(Driver)
- 解析器,编译器,优化器,执行器
4)Hadoop
- 用MR计算,用HDFS存储
hive各组件基本功能
用户接口主要由三个:CLI、JDBC/ODBC和WebGUI。其中,CLI为shell命令行;JDBC/ODBC是Hive的JAVA实现,与传统数据库JDBC类似;WebGUI是通过浏览器访问Hive
元数据存储:Hive 将元数据存储在数据库中。Hive 中的元数据包括表的名字,表的列和分区及其属性,表的属性(是否为外部表等),表的数据所在目录等。
解释器、编译器、优化器完成 HQL 查询语句从词法分析、语法分析、编译、优化以及查询计划的生成。生成的查询计划存储在 HDFS 中,并在随后有 MapReduce 调用执行。
Hive与SQL的比较
1)查询语言
- hive使用类SQL的HQL
- sql使用sql
2)数据存储位置
- hive是将数据存储在HDFS中
- sql可以将数据保存在块设备或者本地文件系统中
3)数据格式
- Hive 中没有定义专门的数据格式,数据格式可以由用户指定,用户定义数据格式需要指定三个属性:列分隔符(通常为空格、”\t”、”\x001″)、行分隔符(”\n”)以及读取文件数据的方法(Hive 中默认有三个文件格式 TextFile,SequenceFile 以及 RCFile)
- 数据库中,不同的数据库有不同的存储引擎,定义了自己的数据格式
4)数据更新
- Hive 中不支持对数据的改写和添加,所有的数据都是在加载的时候中确定好的
- sql支持数据更新
5)执行延迟
- hive延迟性高
- sql延迟性低
6)扩展性
- hive扩展性好
- sql扩展性有限
7)索引
- hive和sql都支持索引
8)分区
hive和sql都支持分区
hive的数据存储
hive的所有数据存储基于hadoop的HDFS,hive没有专门的数据存储格式(可支持Text,SequenceFile,ParquetFile,RCFILE等)
在创建表时,指定Hive 数据的列分隔符和行分隔符,Hive 就可以解析数据
存储结构主要包括:数据库、文件、表、视图、索引
Hive 中包含以下数据模型:DB、Table,External Table,Partition,Bucket
1) db:在hdfs中表现为${hive.metastore.warehouse.dir}目录下一个文件夹
2) table:在hdfs中表现所属db目录下一个文件夹
3) external table:外部表, 与table类似,不过其数据存放位置可以在任意指定路径。普通表:删除表后,hdfs上的文件都删了;外部表删除后, hdfs上的文件没有删除, 只是把文件删除了
4) partition:在hdfs中表现为table目录下的子目录
5) bucket:桶, 在hdfs中表现为同一个表目录下根据hash散列之后的多个文件, 会根据不同的文件把数据放到不同的文件中
hive学习1(hive基本概念)的更多相关文章
- hive学习(二) hive操作
hive ddl 操作官方手册https://cwiki.apache.org/confluence/display/Hive/LanguageManual+DDL hive dml 操作官方手 ...
- hive学习(四) hive的函数
1.内置运算符 1.1关系运算符 运算符 类型 说明 A = B 所有原始类型 如果A与B相等,返回TRUE,否则返回FALSE A == B 无 失败,因为无效的语法. SQL使用”=”,不使用”= ...
- hive学习(三) hive的分区
1.Hive 分区partition 必须在表定义时指定对应的partition字段 a.单分区建表语句: create table day_table (id int, content string ...
- Hive学习笔记——Hive中的分桶
对于每一个表(table)或者分区, Hive可以进一步组织成桶,也就是说桶是更为细粒度的数据范围划分.Hive也是针对某一列进行桶的组织.Hive采用对列值哈希,然后除以桶的个数求余的方式决定该条记 ...
- Hive学习:Hive连接JOIN用例详解
1 准备数据: 1.1 t_1 01 张三 02 李四 03 王五 04 马六 05 小七 06 二狗 1.2 t_2 01 11 03 33 04 44 06 66 07 77 08 88 1.3 ...
- hive学习
大数据的仓库Hive学习 10期-崔晓光 2016-06-20 大数据 hadoop 10原文链接 我们接着之前学习的大数据来学习.之前说到了NoSql的HBase数据库以及Hadoop中 ...
- Hive学习路线图(转)
Hadoophivehqlroadmap学习路线图 1 Comment Hive学习路线图 Hadoop家族系列文章,主要介绍Hadoop家族产品,常用的项目包括Hadoop, Hive, Pig ...
- 【转】Hive学习路线图
原文博客出自于:http://blog.fens.me/hadoop-hive-roadmap/ 感谢! Hive学习路线图 Hadoop家族系列文章,主要介绍Hadoop家族产品,常用的项目包括Ha ...
- Hive学习路线图--张丹老师
前言 Hive是Hadoop家族中一款数据仓库产品,Hive最大的特点就是提供了类SQL的语法,封装了底层的MapReduce过程,让有SQL基础的业务人员,也可以直接利用Hadoop进行大数据的操作 ...
- Hive学习 系列博客
原 Hive作业优化 原 Hive学习六:HIVE日志分析(用户画像) 原 Hive学习五--日志案例分析 原 Hive学习三 原 Hive学习二 原 Hive学习一 博客来源,https://blo ...
随机推荐
- Android开发:《Gradle Recipes for Android》阅读笔记1.6——使用android studio添加依赖
有经验的gradle开发者习惯直接编辑build.gradle文件,但是IDE没有提供许多代码提示.IDE提供了一个可视的界面显示配置内容. 点击像文件夹一样的图标可以看到project struct ...
- linux下软件的安装与卸载
一 软件安装包的类型 通常Linux应用软件的安装有五种: 1) tar+ gz包,如software-1.2.3-1.tar.gz.他是使用UNIX系统的打包工具tar打包的. 2) r ...
- [Spring Data Repositories]学习笔记--使用现有的repository
以下内容是在学习Spring-Data-mongoDB中的Spring Data Repositories时做的一些笔记.备忘! 感觉学习还是看官方的资料比较透彻一些. Spring Data Rep ...
- Spring 缓存注解@Cacheable 在缓存时候 ,出现了第一次进入调用 方法 ,第二次不调用的异常
代码: @Override @Cacheable(value = CACHE_NAME, key = "'CartItemkey_'+#uId") public List<S ...
- coursera 《现代操作系统》 -- 第十周 文件系统(2)
身份验证 Authentication 知道用户是谁.通过账号密码.Id 这样的识别出来. 访问控制 Permission 知道用户是谁后. 主动控制 记录用户ID和对应的访问权限 --> 记录 ...
- java线程:Atomic(原子)
.何谓Atomic? Atomic一词跟原子有点关系,后者曾被人认为是最小物质的单位.计算机中的Atomic是指不能分割成若干部分的意思.如果一段代码被认为是Atomic,则表示这段代码在执行过程中, ...
- element-UI ,Table组件实现拖拽效果
拖拽效果,先放效果图,步骤放在后面~~ 一.引入三方插件 1.引入sortable.js的包: npm install sortable.js --save 2.或者npm i -S vuedragg ...
- Python正则表达式基础
1. 正则表达式基础 1.1. 简单介绍 正则表达式并不是Python的一部分.正则表达式是用于处理字符串的强大工具,拥有自己独特的语法以及一个独立的处理引擎,效率上可能不如str自带的方法,但功能十 ...
- 免费 SSL 安全证书
为了保证网上传输信息的安全而在自己的 Linode VPS 上部署 SSL 加密服务.商业 CA 较贵,所以使用了自己签发的 CA.网友神爱的留言提到了 StartSSL 的免费 CA,稍做了一些调查 ...
- Python2 socket 多线程并发 ThreadingTCPServer Demo
# -*- coding:utf-8 -*- from SocketServer import TCPServer, StreamRequestHandler import traceback cla ...