编辑推荐

Hive图书。
Hive在Hadoop系统中的应用趋势比较可观。

内容简介

  《Hive编程指南》是一本ApacheHive的编程指南,旨在介绍如何使用Hive的SQL方法——HiveQL来汇总、查询和分析存储在Hadoop分布式文件系统上的大数据集合。《Hive编程指南》通过大量的实例,首先介绍如何在用户环境下安装和配置Hive,并对Hadoop和MapReduce进行详尽阐述,演示Hive如何在Hadoop生态系统进行工作。
  《Hive编程指南》适合对大数据感兴趣的爱好者以及正在使用Hadoop系统的数据库管理员阅读使用。

作者简介

EdwardCapriolo:Media6degrees公司系统管理员,他是Apache软件基金会成员,还是Hadoop-Hive项目成员。
DeanWampler:ThinkBigAnalytics公司总顾问,对大数据问题以及Hadoop和机器学习有专门的研究。
JasonRutherglen:ThinkBigAnalytics公司软件架构师,对大数据、Hadoop、搜索和安全有专门的研究。

目录

第1章基础知识
1.1Hadoop和MapReduce综述
1.2Hadoop生态系统中的Hive
1.2.1Pig
1.2.2HBase
1.2.3Cascading、Crunch及其他
1.3Java和Hive:词频统计算法
1.4后续事情

第2章基础操作
2.1安装预先配置好的虚拟机
2.2安装详细步骤
2.2.1装Java
2.2.2安装Hadoop
2.2.3本地模式、伪分布式模式和分布式模式
2.2.4测试Hadoop
2.2.5安装Hive
2.3Hive内部是什么
2.4启动Hive
2.5配置Hadoop环境
2.5.1本地模式配置
2.5.2分布式模式和伪分布式模式配置
2.5.3使用JDBC连接元数据
2.6Hive命令
2.7命令行界面
2.7.1CLI选项
2.7.2变量和属性
2.7.3Hive中“一次使用”命令
2.7.4从文件中执行Hive查询
2.7.5hiverc文件
2.7.6使用HiveCLI的更多介绍
2.7.7查看操作命令历史
2.7.8执行shell命令
2.7.9在Hive内使用Hadoop的dfs命令
2.7.10Hive脚本中如何进行注释
2.7.11显示字段名称

第3章数据类型和文件格式
3.1基本数据类型
3.2集合数据类型
3.3文本文件数据编码
3.4读时模式

第4章HiveQL:数据定义
4.1Hive中的数据库
4.2修改数据库
4.3创建表
4.3.1管理表
4.3.2外部表
4.4分区表、管理表
4.4.1外部分区表
4.4.2自定义表的存储格式
4.5删除表
4.6修改表
4.6.1表重命名
4.6.2增加、修改和删除表分区
4.6.3修改列信息
4.6.4增加列
4.6.5删除或者替换列
4.6.6修改表属性
4.6.7修改存储属性
4.6.8众多的修改表语句

第5章HiveQL:数据操作
5.1向管理表中装载数据
5.2通过查询语句向表中插入数据
5.3单个查询语句中创建表并加载数据
5.4导出数据

第6章HiveQL:查询
6.1SELECT…FROM语句
6.1.1使用正则表达式来指定列
6.1.2使用列值进行计算
6.1.3算术运算符
6.1.4使用函数
6.1.5LIMIT语句
6.1.6列别名
6.1.7嵌套SELECT语句
6.1.8CASE…WHEN…THEN句式
6.1.9什么情况下Hive可以避免进行MapReduce
6.2WHERE语句
6.2.1谓词操作符
6.2.2关于浮点数比较
6.2.3LIKE和RLIKE
6.3GROUPBY语句
6.4JOIN语句
6.4.1INNERJOIN
6.4.2JOIN优化
6.4.3LEFTOUTERJOIN
6.4.4OUTERJOIN
6.4.5RIGHTOUTERJOIN
6.4.6FULLOUTERJOIN
6.4.7LEFTSEMI-JOIN
6.4.8笛卡尔积JOIN
6.4.9map-sideJOIN
6.5ORDERBY和SORTBY
6.6含有SORTBY的DISTRIBUTEBY
6.7CLUSTERBY
6.8类型转换
6.9抽样查询
6.9.1数据块抽样
6.9.2分桶表的输入裁剪
6.10UNIONALL

第7章HiveQL:视图
7.1使用视图来降低查询复杂度
7.2使用视图来限制基于条件过滤的数据
7.3动态分区中的视图和map类型
7.4视图零零碎碎相关的事情

第8章HiveQL:索引
8.1创建索引
8.2重建索引
8.3显示索引
8.4删除索引
8.5实现一个定制化的索引处理器

第9章模式设计
9.1按天划分的表
9.2关于分区
9.3唯一键和标准化
9.4同一份数据多种处理
9.5对于每个表的分区
9.6分桶表数据存储
9.7为表增加列
9.8使用列存储表
9.8.1重复数据
9.8.2多列
9.9(几乎)总是使用压缩

第10章调优
10.1使用EXPLAIN
10.2EXPLAINEXTENDED
10.3限制调整
10.4JOIN优化
10.5本地模式
10.6并行执行
10.7严格模式
10.8调整mapper和reducer个数
10.9JVM重用
10.10索引
10.11动态分区调整
10.12推测执行
10.13单个MapReduce中多个GROUPBY
10.14虚拟列

第11章其他文件格式和压缩方法
11.1确定安装编解码器
11.2选择一种压缩编/解码器
11.3开启中间压缩
11.4最终输出结果压缩
11.5sequencefile存储格式
11.6使用压缩实践
11.7存档分区
11.8压缩:包扎

第12章开发
12.1修改Log4J属性
12.2连接Java调试器到Hive
12.3从源码编译Hive
12.3.1执行Hive测试用例
12.3.2执行hook
12.4配置Hive和Eclipse
12.5Maven工程中使用Hive
12.6Hive中使用hive_test进行单元测试
12.7新增的插件开发工具箱(PDK)

第13章函数
13.1发现和描述函数
13.2调用函数
13.3标准函数
13.4聚合函数
13.5表生成函数
13.6一个通过日期计算其星座的UDF
13.7UDF与GenericUDF
13.8不变函数
13.9用户自定义聚合函数
13.10用户自定义表生成函数
13.10.1可以产生多行数据的UDTF
13.10.2可以产生具有多个字段的单行数据的UDTF
13.10.3可以模拟复杂数据类型的UDTF
13.11在UDF中访问分布式缓存
13.12以函数的方式使用注解
13.12.1定数性(deterministic)标注
13.12.2状态性(stateful)标注
13.12.3唯一性
13.13宏命令

第14章Streaming
14.1恒等变换
14.2改变类型
14.3投影变换
14.4操作转换
14.5使用分布式内存
14.6由一行产生多行
14.7使用streaming进行聚合计算
14.8CLUSTERBY、DISTRIBUTEBY、SORTBY
14.9GenericMRToolsforStreamingtoJava
14.10计算cogroup

第15章自定义Hive文件和记录格式
15.1文件和记录格式
15.2阐明CREATETABLE句式
15.3文件格式
15.3.1SequenceFile
15.3.2RCfile
15.3.3示例自定义输入格式:DualInputFormat
15.4记录格式:SerDe
15.5CSV和TSVSerDe
15.6ObjectInspector
15.7ThingBigHiveReflectionObjectInspector
15.8XMLUDF
15.9XPath相关的函数
15.10JSONSerDe
15.11AvroHiveSerDe
15.11.1使用表属性信息定义AvroSchema
15.11.2从指定URL中定义Schema
15.11.3进化的模式
15.12二进制输出

第16章Hive的Thrift服务
16.1启动ThriftServer
16.2配置Groovy使用HiveServer
16.3连接到HiveServer
16.4获取集群状态信息
16.5结果集模式
16.6获取结果
16.7获取执行计划
16.8元数据存储方法
16.9管理HiveServer
16.9.1生产环境使用HiveServer
16.9.2清理
16.10HiveThriftMetastore
16.10.1ThriftMetastore配置
16.10.2客户端配置

第17章存储处理程序和NoSQL
17.1StorageHandlerBackground
17.2HiveStorageHandler
17.3HBase
17.4Cassandra
17.4.1静态列映射(StaticColumnMapping)
17.4.2为动态列转置列映射
17.4.3CassandraSerDeProperties
17.5DynamoDB

第18章安全
18.1和Hadoop安全功能相结合
18.2使用Hive进行验证
18.3Hive中的权限管理
18.3.1用户、组和角色
18.3.2Grant和Revoke权限
18.4分区级别的权限
18.5自动授权

第19章锁
19.1Hive结合Zookeeper支持锁功能
19.2显式锁和独占锁

第20章Hive和Oozie整合
20.1Oozie提供的多种动作(Action)
20.2一个只包含两个查询过程的工作流示例
20.3Oozie网页控制台
20.4工作流中的变量
20.5获取输出
20.6获取输出到变量

第21章Hive和亚马逊网络服务系统(AWS)
21.1为什么要弹性MapReduce
21.2实例
21.3开始前的注意事项
21.4管理自有EMRHive集群
21.5EMRHive上的ThriftServer服务
21.6EMR上的实例组
21.7配置EMR集群
21.7.1部署hive-site.xml文件
21.7.2部署.hiverc脚本
21.7.3建立一个内存密集型配置
21.8EMR上的持久层和元数据存储
21.9EMR集群上的HDFS和S
21.10在S3上部署资源、配置和辅助程序脚本
21.11S3上的日志
21.12现买现卖
21.13安全组
21.14EMR和EC2以及ApacheHive的比较
21.15包装

第22章HCatalog
22.1介绍
22.2MapReduce
22.2.1读数据
22.2.2写数据
22.3命令行
22.4安全模型
22.5架构

第23章案例研究
23.1m6d.com(Media6Degrees)
23.1.1M6D的数据科学,使用Hive和R
23.1.2M6DUDF伪随机
23.1.3M6D如何管理多MapReduce集群间的Hive数据访问
23.2Outbrain
23.2.1站内线上身份识别
23.2.2计算复杂度
23.2.3会话化
23.3NASA喷气推进实验室
23.3.1区域气候模型评价系统
23.3.2我们的经验:为什么使用Hive
23.3.3解决这些问题我们所面临的挑战
23.4Photobucket
23.4.1Photobucket公司的大数据应用情况
23.4.2Hive所使用的硬件资源信息
23.4.3Hive提供了什么
23.4.4Hive支持的用户有哪些
23.5SimpleReach
23.6ExperiencesandNeedsfromtheCustomerTrenches
23.6.1介绍
23.6.2CustomerTrenches的用例
术语词汇表

精彩书摘

  第1章基础知识
  从早期的互联网主流大爆发开始,主要的搜索引擎公司和电子商务公司就一直在和不断增长的数据进行较量。最近,社交网站也遇到了同样的问题。如今,许多组织已经意识到他们所收集的数据是让他们了解他们的用户,提高业务在市场上的表现以及提高基础架构效率的一个宝贵的资源。
  Hadoop生态系统就是为处理如此大数据集而产生的一个合乎成本效益的解决方案。Hadoop实现了一个特别的计算模型,也就是MapReduce,其可以将计算任务分割成多个处理单元然后分散到一群家用的或服务器级别的硬件机器上,从而降低成本并提供水平可伸缩性。这个计算模型的下面是一个被称为Hadoop分布式文件系统(HDFS)的分布式文件系统。这个文件系统是“可插拔的”,而且现在已经出现了几个商用的和开源的替代方案。
  不过,仍然存在一个挑战,那就是用户如何从一个现有的数据基础架构转移到I~adoop上,而这个基础架构是基于传统关系型数据库和结构化查询语句(SQL)的。对于大量的SQL用户(包括专业数据库设计师和管理员,也包括那些使用SQL从数据仓库中抽取信息的临时用户)来说,这个问题又将如何解决呢?
  这就是Hive出现的原因。Hive提供了一个被称为Hive查询语言(简称HiveQL或HQL)的SQL方言,来查询存储在Hadoop集群中的数据。
  SQL知识分布广泛的一个原因是:它是一个可以有效地、合理地且直观地组织和使用数据的模型。即使对于经验丰富的Java开发工程师来说,将这些常见的数据运算对应到底层的MapReduceJavaAPI也是令人畏缩的。Hive可以帮助用户来做这些苦活,这样用户就可以集中精力关注于查询本身了。Hlve可以将大多数的查询转换为
  MapReduce任务(job),进而在介绍一个令人熟悉的SOL抽象的同时,拓宽Hadoop的可扩展性。如果用户对此存在疑惑,请参考稍后部分的第1.3节“Java和Hive:词频统计算法”中的相关介绍。
  ……

前言/序言

  《Hive编程指南》是一本Hive的编程指南。Hive是Htadoop生态系统中必不可少的一个工具,它提供了一种SQL(结构化查询语言)方言,可以查询存储在Htadoop分布式文件系统(HDFS)中的数据或其他和IIadoop集成的文件系统,如MapR—FS、Anlazon的s3和像HBase(Htadoop数据库)和cassandra这样的数据库中的数据。
  大多数数据仓库应用程序都是使用关系数据库进行实现的,并使用SQL作为查询语言。Hive降低了将这些应用程序转移到Htadoop系统上的难度。凡是会使用SOL语言的开发人员都可以很轻松地学习并使用Hive。如果没有Hive,那么这些用户就必须学习新的语言和工具,然后才能应用到生产环境中。另外,相比其他工具,Hive更便于开发人员将基于SQL的应用程序转移到}tadoop中。如果没有Hive,那么开发者将面临一个艰巨的挑战,如何将他们的SOL应用程序移植到Hadoop上。
  不过,Hive和其他基于SOL的环境还是有一些差异的。如今,可供Hive用户和}tadoop开发者使用的文档并不多,所以我们决定撰写这《Hive编程指南》来填补这个缺口。我们将对Hive进行全面详实的介绍,主要适用于SQL专家,如数据库设计人员和业务分析师。我们也谈到了深入的技术细节,可以帮助Htadoop开发人员对Hive进行调优和定制。

其他推荐