赵伟分享:腾讯TDW中HIVE的实战与关键特性

需积分: 10 45 下载量 46 浏览量 更新于2024-07-23 1 收藏 1.07MB PDF 举报
赵伟在2012年的HBTC大会上分享了腾讯分布式数据仓库(TDW)中HIVE的实际应用和实践经验。作为腾讯数据平台部的一员,赵伟专注于海量数据处理平台的研发,对HIVE、Hadoop、PostgreSQL等技术有深入理解。HIVE在TDW中的角色至关重要,它是一个建立在Hadoop之上,使用类SQL(HiveQL)语言处理结构化数据的数据仓库工具。HIVE支持基本的SQL操作,如SELECT、JOIN、WHERE等,以及自定义函数(UDF)、聚合函数(UDAF)等,提供了丰富的功能。 TDW是腾讯内部最大的分布式系统,基于Hadoop、HIVE和PostgreSQL进行了大量的定制和优化,用于集中存储和处理各业务部门的关键数据,为数据挖掘、产品报表和经营分析等提供服务。该系统具有容灾和线性扩展的能力,确保即使在单个节点故障时,也能保持存储和计算的稳定。TDW支持SQL语言的多样化,包括SQL函数、过程语言(PL/python),以及多维分析功能如rollup、cube和grouping。 除了HIVE,TDW的核心架构还包括MapReduce用于并行计算,HDFS提供分布式存储,而PostgreSQL则处理小规模的数据存储和计算。开发人员可以利用集成开发环境TDWIDE、命令行工具PLClient以及图形化的任务调度系统进行开发和任务配置。系统还提供元数据管理功能,如访问系统数据库、执行特定SQL操作(如showprocesslist和killquery)等。 目前,TDW已经部署了超过5000台机器,最大集群包含约2000个节点,覆盖腾讯90%以上的产品。活跃的集成开发环境用户数超过200人,每天运行的分析SQL数量高达50000条,且这些SQL会转换成约100000个MapReduce作业。在过去半年里,系统的可用性达到了99.99%,显示出其高效稳定的性能。 赵伟的分享详细阐述了HIVE在腾讯分布式数据仓库TDW中的核心作用,展示了如何通过HIVE进行大规模数据分析,并强调了TDW在公司业务中的广泛应用和卓越的性能表现。
2017-11-08 上传
1. HIVE结构 6 1.1 HIVE架构 6 1.2 Hive 和 Hadoop 关系 7 1.3 Hive 和普通关系数据库的异同 8 1.4 HIVE元数据库 9 1.4.1 DERBY 9 1.4.2 Mysql 10 1.5 HIVE的数据存储 11 1.6 其它HIVE操作 11 2. HIVE 基本操作 12 2.1 create table 12 2.1.1 总述 12 2.1.2 语法 12 2.1.3 基本例子 14 2.1.4 创建分区 15 2.1.5 其它例子 16 2.2 Alter Table 17 2.2.1 Add Partitions 17 2.2.2 Drop Partitions 17 2.2.3 Rename Table 17 2.2.4 Change Column 18 2.2.5 Add/Replace Columns 18 2.3 Create View 18 2.4 Show 19 2.5 Load 19 2.6 Insert 21 2.6.1 Inserting data into Hive Tables from queries 21 2.6.2 Writing data into filesystem from queries 21 2.7 Cli 22 2.7.1 Hive Command line Options 22 2.7.2 Hive interactive Shell Command 24 2.7.3 Hive Resources 24 2.7.4 调用python、shell等语言 25 2.8 DROP 26 2.9 其它 27 2.9.1 Limit 27 2.9.2 Top k 27 2.9.3 REGEX Column Specification 27 3. Hive Select 27 3.1 Group By 28 3.2 Order /Sort By 28 4. Hive Join 29 5. HIVE参数设置 31 6. HIVE UDF 33 6.1 基本函数 33 6.1.1 关系操作符 33 6.1.2 代数操作符 34 6.1.3 逻辑操作符 35 6.1.4 复杂类型操作符 35 6.1.5 内建函数 36 6.1.6 数学函数 36 6.1.7 集合函数 36 6.1.8 类型转换 36 6.1.9 日期函数 36 6.1.10 条件函数 37 6.1.11 字符串函数 37 6.2 UDTF 39 6.2.1 Explode 39 7. HIVE 的MAP/REDUCE 41 7.1 JOIN 41 7.2 GROUP BY 42 7.3 DISTINCT 42 8. 使用HIVE注意点 43 8.1 字符集 43 8.2 压缩 43 8.3 count(distinct) 43 8.4 JOIN 43 8.5 DML操作 44 8.6 HAVING 44 8.7 子查询 44 8.8 Join中处理null值的语义区别 44 9. 优化与技巧 47 9.1 全排序 47 9.1.1 例1 48 9.1.2 例2 51 9.2 怎样做笛卡尔积 54 9.3 怎样写exist/in子句 54 9.4 怎样决定reducer个数 55 9.5 合并MapReduce操作 55 9.6 Bucket 与 sampling 56 9.7 Partition 57 9.8 JOIN 58 9.8.1 JOIN原则 58 9.8.2 Map Join 58 9.8.3 大表Join的数据偏斜 60 9.9 合并小文件 62 9.10 Group By 62 10. HIVE FAQ: 62