第1章 Apache Kylin概述 1
1.1 背景和历史 1
1.2 Apache Kylin的使命 3
1.2.1 为什么要使用Apache Kylin 3
1.2.2 Apache Kylin怎样解决关键问题 4
1.3 Apache Kylin的工作原理 5
1.3.1 维度和度量简介 5
1.3.2 Cube和Cuboid 5
1.3.3 工作原理 6
1.4 Apache Kylin的技术架构 7
1.5 Apache Kylin的主要特点 9
1.5.1 标准SQL接口 9
1.5.2 支持超大数据集 9
1.5.3 亚秒级响应 10
1.5.4 可伸缩性和高吞吐率 10
1.5.5 BI及可视化工具集成 11
1.6 与其他开源产品比较 11
1.7 小结 12
第2章 快速入门 13
2.1 核心概念 13
2.1.1 数据仓库、OLAP与BI 13
2.1.2 维度和度量 14
2.1.3 事实表和维度表 14
2.1.4 Cube、Cuboid和Cube Segment 15
2.2 在Hive中准备数据 15
2.2.1 星形模型 15
2.2.2 维度表的设计 16
2.2.3 Hive表分区 16
2.2.4 了解维度的基数 17
2.2.5 Sample Data 17
2.3 设计Cube 17
2.3.1 导入Hive表定义 18
2.3.2 创建数据模型 18
2.3.3 创建Cube 21
2.4 构建Cube 25
2.4.1 全量构建和增量构建 27
2.4.2 历史数据刷新 28
2.4.3 合并 29
2.5 查询Cube 30
2.6 SQL参考 31
2.7 小结 32
第3章 增量构建 33
3.1 为什么要增量构建 33
3.2 设计增量Cube 35
3.2.1 设计增量Cube的前提 35
3.2.2 增量Cube的创建 36
3.3 触发增量构建 37
3.3.1 WebGUI触发 37
3.3.2 构建相关的RestAPI 39
3.4 管理Cube碎片 45
3.4.1 合并Segment 46
3.4.2 自动合并 47
3.4.3 保留Segment 48
3.4.4 数据持续更新 49
3.5 小结 50
第4章 流式构建 51
4.1 为什么要流式构建 51
4.2 准备流式数据 52
4.2.1 数据格式 52
4.2.2 消息队列 53
4.2.3 创建Schema 53
4.3 设计流式Cube 56
4.3.1 创建Model 56
4.3.2 创建Cube 57
4.4 流式构建原理 59
4.5 触发流式构建 61
4.5.1 单次触发 61
4.5.2 自动化多次触发 61
4.5.3 出错处理 62
4.6 小结 63
第5章 查询和可视化 64
5.1 Web GUI 64
5.1.1 查询 64
5.1.2 显示结果 65
5.2 RestAPI 67
5.2.1 查询认证 67
5.2.2 查询请求参数 67
5.2.3 查询返回结果 68
5.3 ODBC 69
5.4 JDBC 71
5.4.1 获得驱动包 71
5.4.2 认证 71
5.4.3 URL格式 71
5.4.4 获取元数据信息 72
5.5 通过Tableau访问Kylin 72
5.5.1 连接Kylin数据源 73
5.5.2 设计数据模型 73
5.5.3 通过Live方式连接 73
5.5.4 自定义SQL 75
5.5.5 可视化 75
5.5.6 发布到Tableau Server 76
5.6 Zeppelin集成 77
5.6.1 Zeppelin架构简介 77
5.6.2 KylinInterpreter的工作原理 77
5.6.3 如何使用Zeppelin访问Kylin 78
5.7 小结 80
第6章 Cube优化 81
6.1 Cuboid剪枝优化 81
6.1.1 维度的诅咒 81
6.1.2 检查Cuboid数量 82
6.1.3 检查Cube大小 83
6.1.4 空间与时间的平衡 84
6.2 剪枝优化的工具 85
6.2.1 使用衍生维度 85
6.2.2 使用聚合组 87
6.3 并发粒度优化 89
6.4 Rowkeys优化 90
6.4.1 编码 90
6.4.2 按维度分片 91
6.4.3 调整Rowkeys顺序 92
6.5 其他优化 93
6.5.1 降低度量精度 93
6.5.2 及时清理无用的Segment 94
6.6 小结 94
第7章 应用案例分析 95
7.1 基本多维分析 95
7.1.1 数据集 95
7.1.2 数据导入 97
7.1.3 创建数据模型 99
7.1.4 创建Cube 102
7.1.5 构建Cube 108
7.1.6 SQL查询 110
7.2 流式分析 112
7.2.1 Kafka数据源 112
7.2.2 创建数据表 113
7.2.3 创建数据模型 115
7.2.4 创建Cube 117
7.2.5 构建Cube 118
7.2.6 SQL查询 119
7.3 小结 119
第8章 扩展ApacheKylin 120
8.1 可扩展式架构 120
8.1.1 工作原理 121
8.1.2 三大主要接口 122
8.2 计算引擎扩展 124
8.2.1 EngineFactory 124
8.2.2 MRBatchCubingEngine2 125
8.2.3 BatchCubingJobBuilder2 126
8.2.4 IMRInput 128
8.2.5 IMROutput2 129
8.3 数据源扩展 130
8.4 存储扩展 132
8.5 聚合类型扩展 134
8.5.1 聚合的JSON定义 134
8.5.2 聚合类型工厂 135
8.5.3 聚合类型的实现 136
8.6 维度编码扩展 140
8.6.1 维度编码的JSON定义 140
8.6.2 维度编码工厂 141
8.6.3 维度编码的实现 142
8.7 小结 143
第9章 ApacheKylin的企业级功能 144
9.1 身份验证 144
9.1.1 自定义验证 145
9.1.2 LDAP验证 146
9.1.3 单点登录 150
9.2 授权 151
9.3 小结 153
第10章 运维管理 154
10.1 安装和配置 154
10.1.1 必备条件 154
10.1.2 快速启动Apache Kylin 157
10.1.3 配置Apache Kylin 160
10.1.4 企业部署 162
10.2 监控和诊断 165
10.2.1 日志 165
10.2.2 任务报警 167
10.2.3 诊断工具 169
10.3 日常维护 170
10.3.1 基本运维 170
10.3.2 元数据备份 170
10.3.3 元数据恢复 171
10.3.4 系统升级 172
10.3.5 垃圾清理 174
10.4 常见问题和修复 175
10.5 获得社区帮助 176
10.5.1 邮件列表 177
10.5.2 JIRA 177
10.6 小结 177
第11章 参与开源 178
11.1 Apache Kylin的开源历程 178
11.2 为什么参与开源 179
11.3 Apache开源社区简介 179
11.3.1 简介 179
11.3.2 组织构成与运作模式 180
11.3.3 项目角色 181
11.3.4 孵化项目及顶级项目 182
11.4 如何贡献到开源社区 183
11.4.1 什么是贡献 183
11.4.2 如何贡献 183
11.5 礼仪与文化 184
11.6 如何参与ApacheKylin 185
11.7 小结 185
第12章 Apache Kylin的未来 186
12.1 大规模流式构建 186
12.2 拥抱Spark技术栈 187
12.3 更快的存储和查询 187
12.4 前端展现及与BI工具的整合 187
12.5 高级OLAP函数 188
12.6 展望 188