资源管理系统Hive简介

上传人:枫** 文档编号:569873463 上传时间:2024-07-31 格式:PPT 页数:32 大小:866.50KB
返回 下载 相关 举报
资源管理系统Hive简介_第1页
第1页 / 共32页
资源管理系统Hive简介_第2页
第2页 / 共32页
资源管理系统Hive简介_第3页
第3页 / 共32页
资源管理系统Hive简介_第4页
第4页 / 共32页
资源管理系统Hive简介_第5页
第5页 / 共32页
点击查看更多>>
资源描述

《资源管理系统Hive简介》由会员分享,可在线阅读,更多相关《资源管理系统Hive简介(32页珍藏版)》请在金锄头文库上搜索。

1、资源管理系统Hive简介Stillwatersrundeep.流静水深流静水深,人静心深人静心深Wherethereislife,thereishope。有生命必有希望。有生命必有希望AgendauHive架构uHive DDLuHive DMLuHive 查询uHive 函数Hive架构架构HadoopMySQLHive 和和 Hadoop 关系关系Hadoop结构结构NameNode可以看作是分布式文件系统中的管理者,主要负责管理文件系统的命名空间、集群配置信息和存储块的复制等;DataNode是文件存储的基本单元,它将Block存储在本地文件系统中,保存了Block的Meta-data,

2、同时周期性地将所有存在的Block信息发送给NameNode。JobTracker的主要职责就是启动、跟踪和调度各个Slave的任务执行。TaskTracker根据应用要求来结合本地数据执行Map任务以及Reduce任务。Map/reduceMap/reduce思想思想先分割再合并Hive VS. RDBMSItemItemHive Hive RDBMS RDBMS 查询语言 HQL SQL 数据存储 HDFS Raw Device or FS 索引 无 有 执行 MapReduce Excutor 执行延迟 高 低 处理数据规模 大 小 Hive 数据模型数据模型TABLE:和RDBMS中的

3、 Table 在概念上是类似的,每一个Table 在Hive中都有一个相应的目录存储数据。Partition :对应于RDBMS中的 Partition 列的密集索引,但是 Hive 中 Partition 的组织方式和数据库中的很不相同。在 Hive 中,表中的一个 Partition 对应于表下的一个目录,所有的 Partition 的数据都存储在对应的目录中.Buckets :对指定列计算 hash,根据 hash 值切分数据,每一个 Bucket 对应一个文件。External Table: 指向已经在 HDFS 中存在的数据,可以创建 Partition。它和 Table 在元数据的

4、组织上是相同的,而实际数据的存储则有较大的差异。Table VS. External TableTable 的创建过程和数据加载过程为两个过程(但可在一条语句完成),在加载数据的过程中,实际数据会被移动到数据仓库目录中;之后对数据对访问将会直接在数据仓库目录中完成。删除表时,表中的数据和元数据将会被同时删除。 External Table 只有一个过程,加载数据和创建表同时完成实际数据是存储在 LOCATION 后面指定的 HDFS 路径中,并不会移动到数据仓库目录中。当删除一个 External Table 时,仅删除 指向文件的链接。数据类型数据类型u基本类型:uTINYINT, SMAL

5、LINT, INT, BIGINT, DOUBLE, STRING,FLOAT,BOOLEANu复杂类型:uMaps, Arraysu类型转换 cast(expr as ) 例如: cast(1 as BIGINT) 将字符串1转化成bigint型Hive DDL建表 删除表 修改表结构 创建删除视图 创建数据库 显示命令HIVEHIVE创建表创建表CREATE EXTERNAL TABLE IF NOT EXISTS table_name LIKE existing_table_name(COLUMN ,COLUMN) LOCATION hdfs_path ROWFORMAT: DELIMI

6、TED FIELDS TERMINATED BY char COLLECTION ITEMS TERMINATED BY char MAP KEYS TERMINATED BY char LINES TERMINATED BY char | SERDE serde_name WITH SERDEPROPERTIES (property_name=property_value, property_name=property_value, .) FILE_FORMAT: : SEQUENCEFILE | TEXTFILE | RCFILE Serde1、SerDe是Serialize/Deseri

7、lize的简称,目的是用于序列化和反序列化。 2、表时可以用自定义的SerDe或使用Hive自带的SerDe,SerDe能为表指定列,且对列指定相应的数据。3、编写序列化类TestDeserializer。实现Deserializer接口的三个函数: a)初始化:initialize(Configuration conf, Properties tb1)。 b)反序列化:Object:deserialize(Writable blob)。 c)获取deserialize(Writable blob)返回值Object的inspector:getObjectInspector()。 。File

8、Format查看表结构命令查看表结构命令u查看所有表命令:SHOW TABLES;可以使用通配符,例如:SHOW TABLES “user*”,查看所有已user开头的表。表明必须用双引号扩上。u查看指定表的表结构: describe TABLE_NAME。u查看函数:SHOW FUNCTIONS;describe FUNCTION_NAME 可以查看关于这个函数的使用说明。u查看分区属性: DESCRIBE EXTENDED table_name partition_specu查看表的详细信息: DESCRIBE EXTENDED table_name修改表修改表命令:ALTER TABLE

9、修改表名: ALTER TABLE table_name RENAME TO new_table_name添加列: ALTER TABLE pokes ADD COLUMNS (new_col INT);修改列: ALTER TABLE test_change CHANGE a a1 INTAFTER COLUMFIRST添加分区: ALTER TABLE table_name ADD partition_spec LOCATION location1 partition_spec: : PARTITION (partition_col = partition_col_value, parti

10、tion_col = partiton_col_value, .)删除分区: ALTER TABLE table_name DROP partition_spec, partition_spec,.创建删除视图创建删除视图创建视图:CREATE VIEW IF NOT EXISTS view_name (column_name COMMENT column_comment, .) COMMENT view_comment AS SELECT 如果没有提供表名,视图列的名字将由定义的SELECT表达式自动生成 视图是只读的,不能用LOAD/INSERT/ALTER 删除视图: DROP VIEW

11、 view_name DML操作操作向数据表内加载文件 将查询结果插入到Hive表中说明:Hive不支持Update操作Hive不支持Insert单笔数据*导入数据导入数据uLOAD DATA LOCAL INPATH filepath OVERWRITE INTO TABLE tablename PARTITION (partcol1=val1, partcol2=val2 .)u创建表的时候指定文件的存储位置,必须为HDFS中文件。uLoad 操作只是单纯的复制/移动操作,将数据文件移动到 Hive 表对应的位置。将查询结果插入将查询结果插入Hive表表基本模式 INSERT OVERWR

12、ITE TABLE tablename1 PARTITION (partcol1=val1, partcol2=val2 .) select_statement1 FROM from_statement 多表插入模式 FROM from_statement INSERT OVERWRITE TABLE tablename1 PARTITION (partcol1=val1, partcol2=val2 .) select_statement1 INSERT OVERWRITE TABLE tablename2 PARTITION . select_statement2 . 将查询结果插入将查询

13、结果插入Hive表表自动分区模式 INSERT OVERWRITE TABLE tablename PARTITION (partcol1=val1, partcol2=val2 .) select_statement FROM from_statement 将查询结果写入HDFS文件系统 FROM from_statement INSERT OVERWRITE LOCAL DIRECTORY directory1 select_statement1 基本的基本的Select 操作操作SELECT ALL | DISTINCT select_expr, select_expr, . FROM

14、table_reference WHERE where_condition GROUP BY col_list HAVING condition CLUSTER BY col_list | DISTRIBUTE BY col_list SORT BY| ORDER BY col_list LIMIT number使用ALL和DISTINCT选项区分对重复记录的处理。默认是ALL,表示查询所有记录。DISTINCT表示去掉重复的记录 Where 条件 :类似我们传统SQL的where 条件 目前支持 AND,OR ,0.9版本支持between IN, NOT IN 不支持EXIST ,NOT

15、EXIST Limit 可以限制查询的记录数Sort By/Order By/Cluster By/Distribute ByOrder byorder by 会对输入做全局排序,因此只有一个reducer(多个reducer无法保证全局有序);只有一个reducer,会导致当输入规模较大时,需要较长的计算时间。Sort bysort by不是全局排序,是局部排序,其在数据进入reducer前完成排序。Distribute by根据distribute by指定的内容将数据分到同一个reducerCluster by除了具有Distribute by的功能外,还会对该字段进行排序。因此,常常认

16、为cluster by = distribute by + sort byyolaHive Jointable_reference JOIN table_factor join_condition | table_reference LEFT|RIGHT|FULL OUTER JOIN table_reference join_condition | table_reference LEFT SEMI JOIN table_reference join_condition| table_reference CROSS JOIN table_reference join_condition (a

17、s of Hive 0.10) 说明:Hive 只支持等值连接(equality joins)、外连接(outer joins)和(left semi joins)。Hive 不支持所有非等值的连接,因为非等值连接非常难转化到 map/reduce 任务 LEFT,RIGHT和FULL OUTER关键字用于处理join中空记录的情况 LEFT SEMI JOIN 是 IN/EXISTS 子查询的一种更高效的实现 join 时,每次 map/reduce 任务的逻辑是这样的:reducer 会缓存 join 序列中除了最后一个表的所有表的记录,再通过最后一个表将结果序列化到文件系统 实践中,应该

18、把最大的那个表写在最后 日期函数日期函数返回类型返回类型名称名称描述描述stringfrom_unixtime(int unixtime) 将时间戳转换为日期时间字符串bigintunix_timestamp() 获得当前时间戳bigintunix_timestamp(string date)获得date表示的时间戳bigintto_date(string timestamp)返回日期字符串stringyear(string date)返回年intmonth(string date)返回月intday(string date) dayofmonth(date)返回日inthour(string

19、 date)返回小时intminute(string date)返回分钟intsecond(string date) 返回秒intweekofyear(string date)返回周intdatediff(string enddate, string startdate)返回enddate和startdate的天数的差intdate_add(string startdate, int days)加days天数到startdateintdate_sub(string startdate, int days)减days天数到startdate条件函数条件函数-if(boolean testCond

20、ition, valueTrue, valueFalseOrNull) 当testCondition为真时返回valueTrue, testCondition为假或NULL时返回valueFalseOrNull-COALESCE(T v1, T v2, .) 返回列表中的第一个非空元素,如果列表元素都为空则返回NULL-CASE a WHEN b THEN c WHEN d THEN e* ELSE f END a = b,返回c;a = d,返回e;否则返回f-CASE WHEN a THEN b WHEN c THEN d* ELSE e END a 为真,返回b;c为真,返回d;否则e常

21、用字符串函数常用字符串函数返回类型返回类型名称名称描述描述intlength(string A)返回字符串长度stringreverse(string A)反转字符串stringconcat(string A, string B.)合并字符串stringsubstr(string A, int start)返回子串stringsubstr(string A, int start, int len)返回限定长度的子串stringupper(string A) ucase(string A) 转换为大写stringlower(string A) lcase(string A) 转换为小写strin

22、gtrim(string A) stringltrim(string A)stringrtrim(string A) stringspace(int n)返回一个包含n个空格的字符串stringrepeat(string str, int n) 重复str字符串n遍string ascii(string str)回str中第一个字符的ascii码stringlpad(string str, int len, string pad) 左端补齐str到长度为len。 stringrpad(string str, int len, string pad) 右端补齐str到长度为len。 array

23、split(string str, string pat) 分割字符串的列表https:/cwiki.apache.org/confluence/display/Hive/LanguageManual+UDF自定义函数自定义函数uUDF( User Defined Functions),只针对每一行处理,类似SQLSERVER中的UPPER()。uUDAF( User-Defined Aggregation Functions ),相当于聚合函数,对多行进行处理,类似SQLSERVER中的AVG()函数。UDF开发开发u开发UDFn1、继承org.apache.hadoop.hive.ql.e

24、xec.UDFn2、重载evaluate函数n3、 evaluate函数支持重载。UDAF开发开发函数类需要继承UDAF类,内部类Evaluator实UDAFEvaluator接口。Evaluator需要实现 init、iterate、terminatePartial、merge、terminate 这几个函数;a)init函数实现接口UDAFEvaluator的init函数。b)iterate接收传入的参数,并进行内部的轮转。其返回类型为boolean。c)terminatePartial无参数,其为iterate函数轮转结束后,返回轮转数据,terminatePartial类似于hadoop的Combiner。d)merge接收terminatePartial的返回结果,进行数据merge操作,其返回类型为boolean。e)terminate返回最终的聚集函数结果。evaluate函数支持重载。

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 医学/心理学 > 基础医学

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号