



版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、简介Hive的组成Hive的数据模型查询语言Hive 是一个构建在Hadoop 上的数据仓库平台,其设计目标是使Hadoop上的数据操作与传统SQL结合,让熟悉SQL编程的开发人员能够向Hadoop平台迁移。Hive可以在HDFS上构建数据仓库来存储结构化的数据,这些数据来源于HDFS上的原始数据, Hive提供了类似SQL的查询语言HiveQL,可以执行查询,变换数据等操作。通过解析,HiveQL语言在底层被转化为相应的MapReduce操作。 Hive的体系结构 Hadoop HJobTrackerNameNode HiveDriver(Compiler,Optimizer,Executo
2、r)ThriftServerCLIJDBC/ODBCWebGUIMetastoreHive相关组件: 外部接口:Hive提供了例如命令行(CLI)、Web界面等用户接口, 还提供了应用程序接口(API)例如 JDBC,ODBC等。 Thrift服务器:Hive Thrift服务器是一种跨语言服务的可伸缩软件框架。它结合律功能强大的软件堆栈的代码生成引擎,可以无缝的与C+、C#、Java、Python、PHP和Ruby结合。Thrift允许用户简单地定义文件中的数据类型和服务接口,编译器生成代码来实现RPC客户端和服务器之间的通信。 Hive内部集成了Thrift服务,支持在多种语言中运行Hiv
3、e命令,使 客户端可以跨平台连接Hive。Hive相关组件: 解析器(Driver):包括解释器,编译器,优化器,执行器,通过这一系列对HiveQL查询语句的处理,最后生成查询计划。解析器管理着HiveQL语句在编译,优化和执行时的生命周期。当接收到一个HiveQL查询语句时,解析器会创建一个相对的句柄,这个句柄被用来追踪执行时间,输出行数等数据。 Hadoop:数据仓库和查询计划存储在HDFS上,计算过程由MapReduce执行。Hive相关组件: 元数据库(Metastore):管理系统目录,通常存储在关系数据库如MySQL,Derby中。Hive所有其他的组件都会与它进行交互。Hive的
4、元数据中保存了表的属性和服务信息,为查询操作提供依据,默认的元数据库是内部的Derby,这种情况下metastore和其他Hive服务运行在同一个Java虚拟机里,只能允许建立单个会话,要实现多用户多会话支持,需要配置一个独立的元数据库。数据在Hive里组织成表,分区和桶的形式 表:Hive里的表类似于关系数据库中的表。每个表都有一个对应的 HDFS目录。表中的数据被序列化后存储在该目录的文件中。 Hive提供了内置的序列化格式。用户还可以通过自定义序列化 和反序列化的方法去支持新的数据格式。每张表的序列化格式 存储在原数据库中,并在查询编译和执行时被自动调用。Hive 同时还支持数据存储在N
5、FS,本地目录的外部表。数据在Hive里组织成表,分区和桶的形式 分区:分区是表的部分列的集合。一个表可以有一个或者多个分区, 这些分区确定了数据在表目录下的分布情况。假设表T的数 据是在/wh/T目录下。如果T在列ds和ctry上被分区,那么 ds值为20090101和ctry值为US的数据将会被存储到 /wh/T/ds=20090101/ctry=US的目录下。 桶:在每个分区中的数据可以根据列的哈希值进一步划分成桶,每 个桶在分区目录下都存在一个文件中。Hive支持的数据类型(基本类型) 基本类型基本类型大小大小描述描述TINYINT1字节有符号整数SMALLINT2字节有符号整数INT
6、4字节有符号整数BIGINT8字节有符号整数FLOAT4字节单精度浮点数DOUBLE8字节双精度浮点数BOOLEAN取true/falseSTRING最大2GB字符串,类似于sql的varcharHive支持的数据类型(复杂类型)复杂类型复杂类型大小大小描述描述ARRAY不限一组有序字段,字段类型必须相同MAP不限无序键值对,键值内部字段类型必须相同STRUCT不限一组字段,字段类型可以不同Hive提供了类似于SQL的查询语言 HiveQL。 HiveQL支持选择,投影,连接,聚合,合并以及From中嵌套的子查询语句。 HiveQL允许在创建表的时候申明表的序列化格式,分区等HiveQL目前不
7、支持行的删除和更新。 HiveQL支持多表的插入操作。HiveQL的常用操作 创建表:创建一张名为userinfo的表,表中有两列id和name,Hive Shell中的创建命令为: create table userinfo (id int, name string) row format delimited fields terminated by t; row format delimited fields terminated by t 是HiveQL特有的,用来指定数据的分隔方式 导入数据:建表后可以从本地文件系统或HDFS中导入数据文件,导入命令如下: load data loca
8、l inpath /home/hadoop/1 overwrite into table userinfoHiveQL的常用操作 创建分区:创建一张名为userinfo的表,表中有两列id和name,并且对name进行分区,创建命令为: create table userinfo (id int) partitioned by (name string) row format delimited fields terminated by t; 创建桶:可以把表或者是分区组织成桶,桶是按行分开组织特定字段,每个桶对应一个reduce操作。在建立桶之前要设置hive.enforce.bucketi
9、ng属性,命令为: set hive.enforce.bucketing; hive.enforce.bucketing=true create table userinfo (id int,name string) clusteredby (id) into 3 buckets row format delimited fields terminated by t;HiveQL的常用操作 多表插入:在同一条语句中,把读取的同一份元数据插入到不同表中。 from userinfo insert overwrite table t1 select id,name insert overwrite
10、 table t2 select count(distinct id),name group by name 修改表:重命名表,增加数据列 alter table userinfo rename to userinfo1 alter talbe userinfo1 add colums (grade string);HiveQL的常用操作 连接,HiveQL的连接分为内连接,左向外连接,右向外连接,全外连接和半连接。例如内链节: select userinfo.*, choice.* from userinfo join choice on (userinf.id = choice.id);
11、子查询:HiveQL只能在from引导的字句中出现子查询。 select teacher, MAX(class_num) from (select teacher, count(classname) as class_num from classinfo group by teacher)subq group by teacher;HiveQL的扩展性 HiveQL只有几十个内嵌的函数,但是可以通过编写UDF(User-Defined Function) 来扩展功能。Hive的UDF包括三种。 UDF(User-Defined Function) 支持一个输入产生一个输出。 UDAF(User
12、-Defined Aggregate Function) 支持多个输入一个输出。 UDTF(Uers-Defined Table-Generating Function) 支持一个输入多个输出。UDF编程示例 UDF类必须继承自org.apache.hadoop.hive.ql.exec.UDF 类,并且实现evaluate方法。下面为对一个查询结果进行大小转化的UDF。package com.cstoreImport org.apache.hadoop.hive.ql.UDF;.Public class lowerORupper extends UDFpublic Text evalute(Text t, String up_or_lower).UDAF编程示例 UDAF类必须继承自org.apache.hadoop.hive.ql.exec.UDAF 类,并且在内部类中实现 org.apache.hadoop.hive.ql.exec.UDAFEvaluator接口, UDAFEvaluator接口有五
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 排长述职报告
- 工程移交协议书(5篇)
- 2025年教案编写:如何让学生理解火灾的危害与灭火的方法
- 廉洁自律-从我做起
- 猪肉知识培训课件
- 2025年中考第一次模拟考试地理(青海卷)(全解全析)
- 国际商务谈判与合同签订作业指导书
- 学校后勤承包经营合同
- 产品品质检测协议
- 2025年湘潭年货运从业资格证考试答案
- 电网工程设备材料信息参考价(2024年第四季度)
- 2025年江苏农牧科技职业学院高职单招职业技能测试近5年常考版参考题库含答案解析
- 2024年湖南铁道职业技术学院单招职业技能测试题库及答案解析word版
- 医院高压氧舱室施工方案
- 质量问题检出奖励申请表模板
- 中职学生日常行为规范主题班会讲稿
- 《大数据分析与应用》教学大纲
- 2022年中国远洋海运集团有限公司招聘考试题库及答案解析
- 供应链管理课件第5章供应链合作伙伴选择与评价
- 4D现场管理培训ppt课件(PPT 45页)
- 餐饮店面投资预算(900平方米)
评论
0/150
提交评论