书籍封面
书籍目录
封面
书名
前言
目录
第1章 概述
1.1 Presto背景及发展
1.2 Presto特点
1.3 基本概念
1.3.1 Presto服务进程
1.3.2 Presto模型
1.3.3 Presto查询执行模型
1.4 Presto整体架构
1.4.1 硬件架构
1.4.2 软件架构
1.5 小结
第2章 Presto安装与部署
2.1 环境说明
2.2 准备工作
2.2.1 建立SSH信任关系
2.2.2 安装Java
2.2.3 安装Maven
2.2.4 安装Hive
2.3 源码编译
2.3.1 下载源码
2.3.2 源码结构说明
2.3.3 编译
2.4 部署
2.4.1 服务部署
2.4.2 客户端部署
2.4.3 JDBC使用
2.5 小结
第3章 Presto RESTful框架解析
3.1 Statement服务接口
3.2 Query服务接口
3.3 Stage服务接口
3.4 Task服务接口
3.5 小结
第4章 提交查询
4.1 提交查询的步骤
4.2 源码解析
4.3 提交查询的流程
4.4 小结
第5章 生成查询执行计划
5.1 基本概念
5.1.1 Node
5.1.2 Metadata API
5.2 词法与语法分析
5.2.1 语法规则
5.2.2 词法分析
5.2.3 语法分析
5.3 获取QueryExecution
5.3.1 获取QueryExecutionFactory
5.3.2 创建QueryExecution
5.3.3 启动QueryExecution
5.4 语义分析
5.4.1 Statement分析
5.4.2 Relation分析
5.4.3 表达式分析
5.5 执行计划生成
5.5.1 执行计划节点
5.5.2 SQL执行计划
5.5.3 Relation执行计划
5.5.4 Query执行计划
5.6 执行计划优化
5.6.1 ImplementSampleAsFilter
5.6.2 CanonicalizeExpressions
5.6.3 SimplifyExpressions
5.6.4 UnaliasSymbolReferences
5.6.5 PruneRedundantProjections
5.6.6 SetFlatteningOptimizer
5.6.7 LimitPushDown
5.6.8 PredicatePushDown
5.6.9 MergeProjections
5.6.10 ProjectionPushDown
5.6.11 IndexJoinOptimizer
5.6.12 CountConstantOptimizer
5.6.13 WindowFilterPushDown
5.6.14 HashGenerationOptimizer
5.6.15 PruneUnreferencedOutputs
5.6.16 MetadataQueryOptimizer
5.6.17 SingleDistinctOptimizer
5.6.18 BeginTableWrite
5.6.19 AddExchanges
5.6.20 PickLayout
5.7 执行计划分段
5.7.1 Source
5.7.2 Fixed
5.7.3 Single
5.7.4 Coordinator_only
5.8 示例
5.8.1 Count执行计划
5.8.2 Join执行计划
5.9 小结
第6章 查询调度
6.1 生成调度执行器
6.2 查询调度过程
6.2.1 NodeManager
6.2.2 NodeSelector
6.3 小结
第7章 查询执行
7.1 查询执行逻辑
7.2 Task调度
7.2.1 Source Task调度
7.2.2 Fixed Task调度
7.2.3 Single Task调度
7.2.4 Coordinator_Only Task调度
7.3 Task执行
7.3.1 创建Task
7.3.2 更新Task
7.3.3 运行Task
7.4 小结
第8章 队列
8.1 配置说明
8.1.1 queues队列定义
8.1.2 rules规则定义
8.2 队列加载
8.3 队列匹配
8.4 小结
第9章 System Connector
9.1 System Connector使用
9.1.1 Information_schema
9.1.2 Metadata
9.1.3 Runtime
9.2 System Connector实现
9.2.1 Information_schema实现
9.2.2 System Connector实现
9.3 小结
第10章 Hive Connector
10.1 与Hive的结合
10.2 Split分片管理
10.3 数据读取
10.4 Create Table As Select的实现
10.5 小结
第11章 Kafka Connector
11.1 认识Kafka Connector
11.1.1 配置
11.1.2 配置属性
11.1.3 内置字段
11.1.4 表定义文件
11.1.5 Kafka中的key和message
11.1.6 行解码
11.1.7 日期和时间解码器
11.1.8 文本解码器
11.1.9 数值解码器
11.2 Kafka连接器使用教程
11.2.1 安装Apache Kafka
11.2.2 下载数据
11.2.3 在Presto中配置Kafka topics
11.2.4 基本数据查询
11.2.5 添加表定义文件
11.2.6 将message中所有值映射到不同列
11.2.7 使用实时数据
11.3 Kafka Connector获取数据
11.3.1 Split分片管理
11.3.2 数据读取
11.4 小结
第12章 Connector开发
12.1 创建Maven工程
12.2 注册Plugin
12.3 Connector
12.4 Metadata
12.5 SplitManager
12.6 RecordSetProvider
12.7 小结
第13章 Functions开发
13.1 Function注册
13.2 窗口函数
13.3 聚合函数
13.4 小结
第14章 JD—Presto功能改造
14.1 PDBO功能开发
14.1.1 JDBC Split剖析
14.1.2 JdbcRecordCursor剖析
14.1.3 分批次读取实现原理
14.1.4 动态步长实现原理
14.1.5 条件下发
14.1.6 PDBO配置定义
14.2 DDL及DML支持
14.2.1 Hive连接器Insert功能
14.2.2 Hive连接器CTAS动态分区表功能
14.3 动态增加、修改、删除Catalog
14.3.1 目的
14.3.2 现状
14.3.3 实现
14.3.4 效果
14.4 小结
第15章 Presto性能调优
15.1 合理设计分区
15.2 Group By字句优化
15.3 使用模糊聚合函数
15.4 合并多条Like子句为一条regexp_like子句
15.5 大表放在Join子句左边
15.6 关闭distributed hash join
15.7 使用ORC存储
15.8 小结
第16章 Presto应用场景
16.1 ETL
16.2 实时数据计算
16.3 Ad—Hoc查询
16.4 实时数据流分析
16.5 小结
附录A常 见问题及解决办法
A.1 同时访问两个Hadoop集群
A.2 Kafka集群重启后无法获取数据
A.3 Task exceeded max memory size
A.4 SQL中In子句太长导致栈溢出错误
A.5 高并发导致大量查询出错
附录BPresto配置参数说明
附录CPresto执行信息说明
没有回复内容