第1章 ODPS概述 1
1.1 引言 1
1.2 初识ODPS 1
1.2.1 背景和挑战 2
1.2.2 为什么做ODPS 2
1.2.3 ODPS是什么 3
1.2.4 ODPS做什么 4
1.3 基本概念 5
1.3.1 账号 5
1.3.2 项目空间 7
1.3.3 表 7
1.3.4 分区 8
1.3.5 任务、作业和作业实例 8
1.3.6 资源 9
1.4 应用开发模式 9
1.4.1 RESTful API 10
1.4.2 ODPS SDK 14
1.4.3 ODPS CLT 14
1.4.4 管理控制台 14
1.4.5 IDE 15
1.5 一些典型场景 15
1.5.1 阿里金融数据仓库 15
1.5.2 CNZZ数据仓库 16
1.5.3 支付宝账号影响力圈 16
1.5.4 阿里金融水文衍生算法 16
1.5.5 阿里妈妈广告CTR预估 17
1.6 现状和前景 17
1.7 小结 18
第2章 ODPS入门 19
2.1 准备工作 19
2.1.1 创建云账号 19
2.1.2 开通ODPS服务 21
2.2 使用管理控制台 22
2.3 配置ODPS客户端 23
2.3.1 下载和配置CLT 23
2.3.2 准备dual表 25
2.3.3 CLT运行模式 27
2.3.4 下载和配置dship 28
2.3.5 通过dship上传下载数据 28
2.4 网站日志分析实例 30
2.4.1 场景和数据说明 30
2.4.2 需求分析 31
2.4.3 数据准备 32
2.4.4 创建表并添加分区 32
2.4.5 数据解析和导入 34
2.4.6 数据加工 39
2.4.7 数据分析 45
2.4.8 自动化运行 51
2.4.9 应用数据集市 54
2.4.10 结果导出 56
2.4.11 结果展现 57
2.4.12 删除数据 58
2.4.13 解决方案:采云间 59
2.5 获取帮助 59
2.6 小结 60
第3章 收集海量数据 61
3.1 dship工具 61
3.2 收集Web日志 64
3.2.1 场景和需求说明 64
3.2.2 问题分析和设计 65
3.2.3 实现说明 66
3.2.4 进一步探讨 69
3.2.5 为什么这么难 72
3.2.6 解决方案:SLS 72
3.3 MySQL数据同步到ODPS 73
3.3.1 场景和需求说明 73
3.3.2 问题分析和实现 73
3.3.3 进一步探讨 75
3.4 下载结果表 76
3.5 小结 76
第4章 使用SQL处理海量数据 77
4.1 ODPS SQL是什么 77
4.2 入门示例 78
4.2.1 场景说明 78
4.2.2 简单的DDL操作 78
4.2.3 生成数据 83
4.2.4 单表查询 84
4.2.5 多表连接JOIN 87
4.2.6 高级查询 96
4.2.7 多表关联UNION ALL 106
4.2.8 多路输出(MULTI-INSERT) 107
4.3 网站日志分析 107
4.3.1 准备数据和表 108
4.3.2 维度表 108
4.3.3 访问路径分析 117
4.3.4 TopK查询 119
4.3.5 IP黑名单 120
4.4 天猫品牌预测 126
4.4.1 主题说明和前期准备 127
4.4.2 理解数据 129
4.4.3 两个简单的实践 130
4.4.4 问题分析和算法设计 133
4.4.5 生成特征 135
4.4.6 抽取正负样本 138
4.4.7 生成模型 142
4.4.8 验证模型 143
4.4.9 预测结果 146
4.4.10 进一步探讨 147
4.5 小结 147
第5章 SQL进阶 148
5.1 UDF是什么 148
5.2 入门示例 149
5.3 实际应用案例 151
5.3.1 URL解码 151
5.3.2 简单的LBS应用 152
5.3.3 网站访问日志UserAgent解析 155
5.4 SQL实现原理 161
5.4.1 词法分析 162
5.4.2 语法分析 162
5.4.3 逻辑分析 163
5.4.4 物理分析 170
5.5 SQL调优 171
5.5.1 数据倾斜 171
5.5.2 一些优化建议 176
5.5.3 一些注意事项 177
5.6 小结 178
第6章 通过Tunnel迁移数据 179
6.1 ODPS Tunnel是什么 179
6.2 入门示例 180
6.2.1 下载和配置 180
6.2.2 准备数据 180
6.2.3 上传数据 181
6.2.4 下载数据 187
6.3 Tunnel原理 188
6.3.1 数据如何传输 189
6.3.2 客户端和服务端如何交互 190
6.3.3 如何实现高并发 191
6.4 从Hadoop迁移到ODPS 191
6.4.1 问题分析 191
6.4.2 客户端实现和分析 192
6.4.3 Mapper实现和分析 197
6.4.4 编译和运行 199
6.4.5 进一步探讨 202
6.5 一些注意点 202
6.6 小结 203
第7章 使用MapReduce处理数据 204
7.1 MapReduce编程模型 204
7.2 MapReduce应用场景 207
7.3 初识ODPS MapReduce 208
7.4 入门示例 209
7.4.1 准备工作 209
7.4.2 问题分析 210
7.4.3 代码实现和分析 211
7.4.4 运行和输出分析 214
7.4.5 扩展:使用Combiner? 217
7.5 TopK查询 220
7.5.1 场景和数据说明 221
7.5.2 问题分析 221
7.5.3 具体实现分析 223
7.5.4 运行和结果输出 228
7.5.5 扩展:忽略Stop Words 229
7.5.6 扩展:数据和任务统计 231
7.5.7 扩展:MR2模型 233
7.6 SQL和MapReduce,用哪个? 235
7.7 小结 235
第8章 MapReduce进阶 236
8.1 再谈Shuffle&Sort 236
8.2 好友推荐 238
8.2.1 场景和数据说明 238
8.2.2 问题定义和分析 239
8.2.3 代码实现 241
8.3 LBS应用探讨:周边定位 244
8.3.1 场景和数据说明 244
8.3.2 问题定义和分析 245
8.3.3 代码实现和分析 247
8.3.4 运行和测试 251
8.4 MapReduce调试 253
8.4.1 带bug的代码 253
8.4.2 通过本地模式调试 254
8.4.3 通过Counter调试 254
8.4.4 通过log调试 255
8.5 一些注意事项 257
8.6 小结 257
第9章 机器学习算法 258
9.1 初识ODPS算法 258
9.2 入门示例 259
9.2.1 通过CLT统计分析 259
9.2.2 通过XLab统计分析 260
9.3 几个经典的算法 263
9.3.1 逻辑回归(LogisticProgression) 263
9.3.2 随机森林(RandomForest) 264
9.4 天猫品牌预测 265
9.4.1 逻辑回归 265
9.4.2 随机森林 272
9.4.3 脚本实现和自动化 279
9.4.4 进一步探讨 283
9.5 小结 284
第10章 使用SDK访问ODPS服务 285
10.1 主要的Package和接口 285
10.1.1 主要的Package 285
10.1.2 核心接口 286
10.2 入门示例 286
10.3 基于Eclipse插件开发 288
10.4 小结 289
第11章 ODPS权限、资源和数据管理 290
11.1 权限管理 290
11.1.1 账号授权 290
11.1.2 角色(Role)授权 294
11.1.3 ACL授权特点 296
11.1.4 简单的Policy授权 297
11.1.5 Role Policy 299
11.1.6 ACL授权和Policy授权小结 301
11.2 资源管理 302
11.2.1 Project内的资源管理 302
11.2.2 跨Project的资源共享 303
11.3 数据管理 305
11.3.1 表生命周期 305
11.3.2 数据归并(Merge) 307
11.3.3 跨Project数据同步 308
11.3.4 跨Project数据保护(Project Protection) 309
11.4 小结 312
第12章 深入了解ODPS 313
12.1 体系架构 313
12.1.1 客户端 314
12.1.2 接入层 314
12.1.3 逻辑层 315
12.1.4 存储/计算层 316
12.2 执行流程 317
12.2.1 提交作业 318
12.2.2 运行作业 318
12.2.3 查询作业状态 318
12.2.4 执行逻辑图 319
12.3 底层数据存储 319
12.3.1 CFILE是什么 320
12.3.2 CFILE逻辑结构 320
12.4 内聚式框架 320
12.4.1 元数据 321
12.4.2 运维管理 321
12.4.3 多控制集群和多计算集群 322
12.5 跨集群复制 323
12.5.1 数据迁移 324
12.5.2 跨集群同步 325
12.6 小结 329
第13章 探索0DPS之美 330
13.1 R语言数据探索 330
13.1.1 安装和配置 330
13.1.2 一些基本操作 331
13.1.3 分析建模 331
13.2 实时流计算 333
13.3 图计算模型 334
13.4 准实时SQL 335
13.5 机器学习平台 336