第一部分 HAWQ技术解析 3
第1章 HAWQ概述 3
1.1 SQL-on-Hadoop 3
1.1.1对SQL-on-Hadoop的期待 3
1.1.2 SQL-on-Hadoop的实现方式 4
1.2 HAWQ简介 6
1.2.1历史与现状 7
1.2.2功能特性 7
1.3 HAWQ系统架构 9
1.3.1系统架构 10
1.3.2内部架构 11
1.4为什么选择HAWQ 12
1.4.1常用SQL-on-Hadoop产品的不足 12
1.4.2 HAWQ的可行性 13
1.4.3适合DBA的解决方案 18
1.5小结 18
第2章 HAWQ安装部署 19
2.1安装规划 19
2.1.1选择安装介质 19
2.1.2选择HAWQ版本 20
2.1.3确认Ambari与HDP的版本兼容性 20
2.2安装前准备 21
2.2.1确认最小系统需求 21
2.2.2准备系统安装环境 22
2.2.3建立本地Repository 24
2.3安装Ambari 25
2.4安装HDP集群 27
2.5安装HAWQ 29
2.6启动与停止HAWQ 34
2.6.1基本概念 34
2.6.2操作环境 34
2.6.3基本操作 36
2.7小结 40
第3章 连接管理 41
3.1配置客户端身份认证 41
3.2管理角色与权限 45
3.2.1 HAWQ中的角色与权限 45
3.2.2管理角色及其成员 46
3.2.3管理对象权限 48
3.2.4口令加密 49
3.3 psql连接HAWQ 50
3.4 Kettle连接HAWQ 52
3.5连接常见问题 55
3.6小结 56
第4章 数据库对象管理 57
4.1创建和管理数据库 57
4.2创建和管理表空间 61
4.3创建和管理模式 65
4.4创建和管理表 72
4.4.1创建表 72
4.4.2删除表 74
4.4.3查看表对应的HDFS文件 74
4.5创建和管理视图 76
4.6管理其他对象 77
4.7小结 78
第5章 分区表 79
5.1 HAWQ中的分区表 79
5.2确定分区策略 80
5.3创建分区表 81
5.3.1范围分区与列表分区 81
5.3.2多级分区 86
5.3.3对已存在的非分区表进行分区 86
5.4分区消除 87
5.5分区表维护 91
5.6小结 98
第6章 存储管理 99
6.1数据存储选项 99
6.2数据分布策略 103
6.2.1数据分布策略概述 103
6.2.2选择数据分布策略 104
6.2.3数据分布用法 108
6.3从已有的表创建新表 111
6.4小结 117
第7章 资源管理 118
7.1 HAWQ资源管理概述 118
7.1.1全局资源管理 118
7.1.2 HAWQ资源队列 119
7.1.3资源管理器配置原则 119
7.2配置独立资源管理器 120
7.3整合YARN 123
7.4管理资源队列 129
7.5查询资源管理器状态 134
7.6小结 137
第8章 数据管理 138
8.1基本数据操作 138
8.2数据装载与卸载 141
8.2.1 gpfdist协议及其外部表 141
8.2.2基于Web的外部表 148
8.2.3使用外部表装载数据 151
8.2.4外部表错误处理 151
8.2.5使用hawq load装载数据 152
8.2.6使用COPY复制数据 155
8.2.7卸载数据 157
8.2.8 hawq register 159
8.2.9格式化数据文件 159
8.3数据库统计 163
8.3.1系统统计 163
8.3.2统计配置 166
8.4 PXF 168
8.4.1安装配置PXF 168
8.4.2 PXF profile 168
8.4.3访问HDFS文件 170
8.4.4访问Hive数据 174
8.4.5访问JSON数据 186
8.4.6向HDFS中写入数据 190
8.5小结 194
第9章 过程语言 195
9.1 HAWQ内建SQL语言 195
9.2 PL/pgSQL函数 197
9.3给HAWQ内部函数起别名 198
9.4表函数 198
9.5参数个数可变的函数 201
9.6多态类型 202
9.7 UDF管理 205
9.8 UDF实例——递归树形遍历 207
9.9小结 214
第10章 查询优化 215
10.1 HAWQ的查询处理流程 215
10.2 GPORCA查询优化器 217
10.2.1 GPORCA的改进 218
10.2.2启用GPORCA 224
10.2.3使用GPORCA需要考虑的问题 225
10.2.4 GPORCA的限制 227
10.3性能优化 228
10.4查询剖析 232
10.5小结 238
第11章 高可用性 239
11.1备份与恢复 239
11.1.1备份方法 239
11.1.2备份与恢复示例 242
11.2高可用性 247
11.2.1 HAWQ高可用简介 247
11.2.2 Master节点镜像 248
11.2.3 HAWQ文件空间与HDFS高可用 251
11.2.4 HAWQ容错服务 260
11.3小结 262
第二部分 HAWQ实战演练 265
第12章 建立数据仓库示例模型 265
12.1业务场景 265
12.2数据仓库架构 267
12.3实验环境 268
12.4 HAWQ相关配置 269
12.5创建示例数据库 273
12.5.1在hdp4上的MySQL中创建源库对象并生成测试数据 273
12.5.2创建目标库对象 275
12.5.3装载日期维度数据 283
12.6小结 284
第13章 初始ETL 285
13.1用Sqoop初始数据抽取 285
13.1.1覆盖导入 286
13.1.2增量导入 286
13.1.3建立初始抽取脚本 287
13.2向HAWQ初始装载数据 288
13.2.1数据源映射 288
13.2.2确定SCD处理方法 288
13.2.3实现代理键 289
13.2.4建立初始装载脚本 289
13.3建立初始ETL脚本 291
13.4小结 293
第14章 定期ETL 294
14.1变化数据捕获 294
14.2创建维度表版本视图 296
14.3创建时间戳表 297
14.4用Sqoop定期数据抽取 298
14.5建立定期装载HAWQ函数 298
14.6建立定期ETL脚本 303
14.7测试 303
14.7.1准备测试数据 303
14.7.2执行定期ETL脚本 304
14.7.3确认ETL过程正确执行 305
14.8动态分区滚动 307
14.9准实时数据抽取 309
14.10小结 317
第15章 自动调度执行ETL作业 318
15.1 Oozie简介 318
15.2建立工作流前的准备 320
15.3用Oozie建立定期ETL工作流 324
15.4 Falcon简介 328
15.5用Falcon process调度Oozie工作流 329
15.6小结 332
第16章 维度表技术 333
16.1增加列 333
16.2维度子集 342
16.3角色扮演维度 348
16.4层次维度 354
16.4.1固定深度的层次 355
16.4.2多路径层次 357
16.4.3参差不齐的层次 359
16.5退化维度 361
16.6杂项维度 366
16.7维度合并 374
16.8分段维度 380
16.9小结 386
第17章 事实表技术 387
17.1周期快照 388
17.2累积快照 394
17.3无事实的事实表 404
17.4迟到的事实 409
17.5累积度量 416
17.6小结 422
第18章 联机分析处理 423
18.1联机分析处理简介 423
18.1.1概念 423
18.1.2分类 424
18.1.3性能 426
18.2联机分析处理实例 427
18.2.1销售订单 427
18.2.2行列转置 433
18.3交互查询与图形化显示 440
18.3.1 Zeppelin简介 440
18.3.2使用Zeppelin执行HAWQ查询 441
18.4小结 448
第三部分 HAWQ数据挖掘 451
第19章 整合HAWQ与MADlib 451
19.1 MADlib简介 452
19.2安装与卸载MADlib 455
19.3 MADlib基础 458
19.3.1向量 458
19.3.2矩阵 469
19.4小结 484
第20章 奇异值分解 485
20.1奇异值分解简介 485
20.2 MADlib奇异值分解函数 486
20.3奇异值分解实现推荐算法 489
20.4小结 501
第21章 主成分分析 502
21.1主成分分析简介 502
21.2 MADlib的PCA相关函数 504
21.3 PCA应用示例 509
21.4小结 513
第22章 关联规则方法 514
22.1关联规则简介 514
22.2 Apriori算法 517
22.2.1 Apriori算法基本思想 517
22.2.2 Apriori算法步骤 518
22.3 MADlib的Apriori算法函数 518
22.4 Apriori应用示例 519
22.5小结 524
第23章 聚类方法 525
23.1聚类方法简介 525
23.2 k-means方法 526
23.2.1基本思想 527
23.2.2原理与步骤 527
23.2.3 k-means算法 527
23.3 MADlib的k-means相关函数 529
23.4 k-means应用示例 532
23.5小结 537
第24章 回归方法 538
24.1回归方法简介 538
24.2 Logistic回归 539
24.3 MADlib的Logistic回归相关函数 539
24.4 Logistic回归示例 542
24.5小结 546
第25章 分类方法 547
25.1分类方法简介 547
25.2决策树 549
25.2.1决策树的基本概念 549
25.2.2决策树的构建步骤 549
25.3 MADlib的决策树相关函数 551
25.4决策树示例 555
25.5小结 561
第26章 图算法 562
26.1图算法简介 562
26.2单源最短路径 565
26.3 MADlib的单源最短路径相关函数 566
26.4单源最短路径示例 567
26.5小结 569
第27章 模型验证 570
27.1交叉验证简介 570
27.2 MADlib的交叉验证相关函数 573
27.3交叉验证示例 575
27.4小结 578