Presto实战

Book description

作为高性能分布式SQL查询引擎,Presto能够针对不同的数据源高效、快速地执行交互式分析。大数据的兴起使得数据存储机制多样化。面对标准不一的存储系统,你可以利用Presto轻松打破壁垒,连通数据孤岛。

本书由Presto项目创始成员参与执笔。你将学会用简单的Presto语句快速查询多个数据源,把握SQL-on-Anything的精髓。在任何规模、任何存储系统、任何环境中,你都能发挥SQL的威力。

  • 入门:探索Presto的用例,学习安装、配置和使用Presto。
  • 进阶:深入理解Presto的架构,在生产环境中部署Presto,学习连接器实例和SQL高级特性。
  • 实践:了解如何在生产环境中使用Presto,保证安全性,监控负载,进行查询调优,与其他工具集成。

Table of contents

  1. 封面
  2. 扉页
  3. 版权页
  4. 版权声明
  5. oreilly介绍
  6. 本书赞誉
  7. 目录 (1/2)
  8. 目录 (2/2)
  9. 前言
    1. 关于本书
    2. 排版约定
    3. 代码示例、授权和引用说明
    4. O’Reilly在线学习平台(O’Reilly Online Learning)
    5. 联系我们
    6. 致谢
    7. 电子书
  10. 第一部分 Presto入门
    1. 第1章 Presto介绍
      1. 1.1 大数据带来的问题
      2. 1.2 Presto来救场
        1. 1.2.1 为性能和规模而生
        2. 1.2.2 SQL-on-Anything
        3. 1.2.3 存储与计算分离
      3. 1.3 Presto使用场景
        1. 1.3.1 单一的SQL分析访问点
        2. 1.3.2 数据仓库和数据源系统的访问点
        3. 1.3.3 提供对任何内容的SQL访问
        4. 1.3.4 联邦查询
        5. 1.3.5 虚拟数据仓库的语义层
        6. 1.3.6 数据湖查询引擎
        7. 1.3.7 SQL转换和ETL
        8. 1.3.8 更快的响应带来更好的数据见解
        9. 1.3.9 大数据、机器学习和人工智能
        10. 1.3.10 其他使用场景
      4. 1.4 Presto资源
        1. 1.4.1 官方网站
        2. 1.4.2 文档
        3. 1.4.3 社区交流
        4. 1.4.4 源代码、许可证和版本
        5. 1.4.5 贡献
        6. 1.4.6 本书仓库
        7. 1.4.7 鸢尾花数据集
        8. 1.4.8 航班数据集
      5. 1.5 Presto简史
      6. 1.6 小结
    2. 第2章 安装和配置Presto
      1. 2.1 使用Docker容器尝试Presto
      2. 2.2 使用归档文件安装
        1. 2.2.1 JVM
        2. 2.2.2 Python
        3. 2.2.3 安装
        4. 2.2.4 配置
      3. 2.3 添加数据源
      4. 2.4 运行Presto
      5. 2.5 小结
    3. 第3章 使用Presto
      1. 3.1 Presto CLI
        1. 3.1.1 使用入门
        2. 3.1.2 分页
        3. 3.1.3 命令历史
        4. 3.1.4 额外诊断
        5. 3.1.5 执行查询
        6. 3.1.6 输出格式
        7. 3.1.7 忽略错误
      2. 3.2 Presto JDBC驱动
        1. 3.2.1 下载和注册驱动
        2. 3.2.2 创建到Presto的连接
      3. 3.3 Presto与ODBC
      4. 3.4 客户端库
      5. 3.5 Presto Web UI
      6. 3.6 使用Presto执行SQL
        1. 3.6.1 概念
        2. 3.6.2 入门案例
      7. 3.7 小结
  11. 第二部分 深入理解Presto
    1. 第4章 Presto的架构
      1. 4.1 集群中的协调器和工作节点
      2. 4.2 协调器
      3. 4.3 节点发现服务
      4. 4.4 工作节点
      5. 4.5 基于连接器的架构
      6. 4.6 catalog、schema和表
      7. 4.7 查询执行模型
      8. 4.8 查询优化
        1. 4.8.1 解析和分析
        2. 4.8.2 初始查询计划
      9. 4.9 优化规则
        1. 4.9.1 谓词下推
        2. 4.9.2 Cross Join消除
        3. 4.9.3 TopN
        4. 4.9.4 局部聚合
      10. 4.10 实现规则
        1. 4.10.1 Lateral Join去关联化
        2. 4.10.2 Semi-join(IN)去关联化
      11. 4.11 基于代价的优化器 (1/2)
      12. 4.11 基于代价的优化器 (2/2)
        1. 4.11.1 代价的概念
        2. 4.11.2 Join的代价
        3. 4.11.3 表统计信息
        4. 4.11.4 过滤统计信息
        5. 4.11.5 分区表的统计信息
        6. 4.11.6 Join枚举
        7. 4.11.7 广播Join和分布式Join
      13. 4.12 使用表统计信息
        1. 4.12.1 Presto的ANALYZE命令
        2. 4.12.2 在写入存储时收集数据
        3. 4.12.3 Hive的ANALYZE命令
        4. 4.12.4 显示表统计信息
      14. 4.13 小结
    2. 第5章 生产环境部署
      1. 5.1 配置细节
      2. 5.2 服务端配置
      3. 5.3 日志
      4. 5.4 节点配置
      5. 5.5 JVM配置
      6. 5.6 启动器
      7. 5.7 集群安装
      8. 5.8 使用RPM安装
        1. 5.8.1 安装目录结构
        2. 5.8.2 配置
        3. 5.8.3 卸载Presto
      9. 5.9 在云上安装
      10. 5.10 集群规模的考量
      11. 5.11 小结
    3. 第6章 连接器
      1. 6.1 配置
      2. 6.2 RDBMS连接器示例:PostgreSQL
        1. 6.2.1 查询下推
        2. 6.2.2 并行性和并发性
        3. 6.2.3 其他RDBMS连接器
        4. 6.2.4 安全性
      3. 6.3 Presto TPC-H和TPC-DS连接器
      4. 6.4 用于分布式存储数据源的Hive连接器 (1/2)
      5. 6.4 用于分布式存储数据源的Hive连接器 (2/2)
        1. 6.4.1 Apache Hadoop和Hive
        2. 6.4.2 Hive连接器
        3. 6.4.3 Hive式表格式
        4. 6.4.4 内部表与外部表
        5. 6.4.5 分区数据
        6. 6.4.6 加载数据
        7. 6.4.7 文件格式和压缩
        8. 6.4.8 MinIO示例
      6. 6.5 非关系数据源
      7. 6.6 Presto JMX连接器
      8. 6.7 黑洞连接器
      9. 6.8 内存连接器
      10. 6.9 其他连接器
      11. 6.10 小结
    4. 第7章 高级连接器实例
      1. 7.1 用Phoenix连接HBase
      2. 7.2 键值存储连接器示例:Accumulo (1/2)
      3. 7.2 键值存储连接器示例:Accumulo (2/2)
        1. 7.2.1 使用Presto Accumulo连接器
        2. 7.2.2 Accumulo中的谓词下推
      4. 7.3 Apache Cassandra连接器
      5. 7.4 流式系统连接器示例:Kafka
      6. 7.5 文档存储连接器示例:Elasticsearch
        1. 7.5.1 概述
        2. 7.5.2 配置和使用方法
        3. 7.5.3 查询处理
        4. 7.5.4 全文搜索
        5. 7.5.5 总结
      7. 7.6 Presto中的联邦查询 (1/2)
      8. 7.6 Presto中的联邦查询 (2/2)
      9. 7.7 ETL和联合查询
      10. 7.8 小结
    5. 第8章 在Presto中使用SQL
      1. 8.1 Presto语句
      2. 8.2 Presto系统表
      3. 8.3 catalog
      4. 8.4 schema
      5. 8.5 Information Schema
      6. 8.6 表 (1/2)
      7. 8.6 表 (2/2)
        1. 8.6.1 表和列属性
        2. 8.6.2 复制现有的表
        3. 8.6.3 从查询结果中新建表
        4. 8.6.4 修改表
        5. 8.6.5 删除表
        6. 8.6.6 连接器对表操作的限制
      8. 8.7 视图
      9. 8.8 会话信息和配置
      10. 8.9 数据类型 (1/2)
      11. 8.9 数据类型 (2/2)
        1. 8.9.1 集合数据类型
        2. 8.9.2 时态数据类型
        3. 8.9.3 类型转换
      12. 8.10 SELECT语句基础
      13. 8.11 WHERE子句
      14. 8.12 GROUP BY和HAVING子句
      15. 8.13 ORDER BY子句和LIMIT子句
      16. 8.14 JOIN语句
      17. 8.15 UNION、INTERSECT和EXCEPT子句
      18. 8.16 分组操作
      19. 8.17 WITH子句
      20. 8.18 子查询
        1. 8.18.1 标量子查询
        2. 8.18.2 EXISTS子查询
        3. 8.18.3 集合比较子查询
      21. 8.19 从表中删除数据
      22. 8.20 小结
    6. 第9章 高级SQL特性
      1. 9.1 函数和运算符介绍
      2. 9.2 标量函数和运算符
      3. 9.3 布尔运算符
      4. 9.4 逻辑运算符
      5. 9.5 用BETWEEN语句选择范围
      6. 9.6 用IS (NOT) NULL检测值的存在
      7. 9.7 数学函数和运算符
      8. 9.8 三角函数
      9. 9.9 常数和随机函数
      10. 9.10 字符串函数和运算符
      11. 9.11 字符串和映射
      12. 9.12 Unicode
      13. 9.13 正则表达式
      14. 9.14 解嵌套复杂数据类型
      15. 9.15 JSON函数
      16. 9.16 日期和时间函数及运算符
      17. 9.17 直方图
      18. 9.18 聚合函数
        1. 9.18.1 映射聚合函数
        2. 9.18.2 近似聚合函数
      19. 9.19 窗函数
      20. 9.20 lambda表达式
      21. 9.21 地理空间函数
      22. 9.22 Prepared Statement
      23. 9.23 小结
  12. 第三部分 Presto的实际应用
    1. 第10章 安全
      1. 10.1 认证
      2. 10.2 授权
        1. 10.2.1 系统访问控制
        2. 10.2.2 连接器访问控制
      3. 10.3 加密 (1/2)
      4. 10.3 加密 (2/2)
        1. 10.3.1 加密Presto客户端与协调器之间的通信
        2. 10.3.2 创建Java keystore和Java truststore
        3. 10.3.3 在Presto集群内加密通信
      5. 10.4 CA与自签名证书
      6. 10.5 证书认证
      7. 10.6 Kerberos
        1. 10.6.1 前提条件
        2. 10.6.2 Kerberos客户端认证
        3. 10.6.3 集群内部Kerberos
      8. 10.7 数据源访问和安全配置
      9. 10.8 使用Hive连接器进行Kerberos验证
        1. 10.8.1 Hive Metastore Thrift服务认证
        2. 10.8.2 HDFS认证
      10. 10.9 集群分离
      11. 10.10 小结
    2. 第11章 将Presto与其他工具集成
      1. 11.1 使用Apache Superset进行查询、可视化和更多操作
      2. 11.2 使用RubiX提高性能
      3. 11.3 使用Apache Airflow的工作流
      4. 11.4 嵌入式Presto示例:Amazon Athena
      5. 11.5 Starburst企业版Presto
      6. 11.6 其他集成案例
      7. 11.7 自定义集成
      8. 11.8 小结
    3. 第12章 生产环境中的Presto
      1. 12.1 使用Presto Web UI监控
        1. 12.1.1 集群级的细节
        2. 12.1.2 查询列表
        3. 12.1.3 查询细节视图
      2. 12.2 Presto SQL查询调优
      3. 12.3 内存管理
      4. 12.4 任务并发性
      5. 12.5 工作节点调度
        1. 12.5.1 根据任务或节点调度切片
        2. 12.5.2 本地调度策略
      6. 12.6 网络数据交换
        1. 12.6.1 并发性
        2. 12.6.2 缓冲区大小
      7. 12.7 Java虚拟机调优
      8. 12.8 资源组
        1. 12.8.1 资源组的定义
        2. 12.8.2 调度策略
        3. 12.8.3 选择器规则定义
      9. 12.9 小结
    4. 第13章 真实世界的案例
      1. 13.1 部署和运行时平台
      2. 13.2 集群规模
      3. 13.3 Hadoop/Hive迁移的使用场景
      4. 13.4 其他数据源
      5. 13.5 用户和流量
      6. 13.6 小结
    5. 第14章 总结
  13. 关于作者
  14. 关于封面

Product information

  • Title: Presto实战
  • Author(s): Matt Fuller, Manfred Moser, Martin Traverso
  • Release date: March 2021
  • Publisher(s): Posts & Telecom Press
  • ISBN: 9787115560056

You might also like

book

数据库系统内幕

by Alex Petrov

当我们选择、使用并维护一个数据库系统时,理解它的原理至关重要。但是现今有太多的分布式数据库和工具可供使用,要想弄明白每一种工具的作用以及它们之间的区别往往并不容易。在这本实用指南中,作者讲解了现代数据库和存储引擎背后的概念。 通过本书,你将领略到从众多书籍、论文、博客和多个开源数据库源代码中精心选取的相关材料,并且了解到众多现代数据库之间最重要的区别在于决定存储结构和数据分布的子系统。 你将深入了解如下内容: 存储引擎:学习存储的种类、分类依据,理解基于B树和不可变日志存储结构的存储引擎。 存储构建块:理解数据库文件如何使用诸如页缓存、缓冲池等辅助数据结构来组织构建高效的存储。 分布式系统:逐步学习节点和进程间如何连接并构建复杂的通信模式。 数据库集群:深入探究现在数据库中常用的一致性模型,并了解分布式存储系统是如何实现一致性的。

book

云原生:运用容器、函数计算和数据构建下一代应用

by Boris Scholl, Trent Swanson, Peter Jausovec

开发者们刚开始接触云端服务开发的时候或多或少都会遇到一些障碍。既要学习分布式系统的知识,又要熟悉像容器和函数计算这样的新技术,还要综合运用这些知识来构建云原生应用实在是件令人望而生畏的事情。本书可以帮助你掌握构建云原生应用的方法,比如消息通信、事件通知和DevOps等。 本书介绍了构建现代云原生应用的架构模块。你将学会如何使用微服务、容器、无服务器架构、函数计算等技术,并挑选合适的存储类型,同时考虑可移植性等问题。你会从云原生应用的基础知识开始,一步步地了解设计、开发和运维云原生应用的整个过程。 探讨设计云原生应用所需的技术。 介绍容器和函数计算的区别,并学习它们的适用场景。 有针对性地设计应用来满足数据相关的需求。 学习DevOps的基础知识和一些开发、测试、运维实践。 学习一些构建和管理云原生应用的技巧、方法和实践。 理解构建一个具有可移植性的应用所需的代价,并且学会对需求做出取舍。

book

SQL经典实例(第2版)

by Anthony Molinaro, Robert de Graaf

你或许熟悉SQL基础知识,但能否充分发挥它的强大威力呢?本书从实战角度展示SQL在查询之外的能力。你将学会用SQL进行统计分析,像使用商业智能工具那样制作报表,进行文本数据匹配,以及执行复杂的日期数据分析。本书的写作方式独树一帜,以160余个真实场景为例,提供了让你耳目一新的解决方案。书中的实例短小精悍,涵盖5种主流的关系数据库:Oracle、MySQL、SQL Server、PostgreSQL和DB2。 数据分析师、数据科学家和数据库管理员可以通过本书练习解决SQL问题的能力,并开拓思路。对于其他需要在日常工作中与SQL打交道的读者,本书也是弥足珍贵的参考书,有助于快速查找解决方案。 本书第2版做了如下更新。 全面修订了原有实例,帮助你巩固基础知识并充分利用各个SQL实现引入的窗口函数 新增了一些实例,旨在帮助你采用可读性更强、更容易实现的通用表表达式(CTE) 为非数据库专家(如数据科学家)量身定制了一些实例 扩展了处理数字和字符串的解决方案 包含更多标准解决方案

book

大数据项目管理:从规划到实现

by Ted Malaska, Jonathan Seidman

许多公司会在大数据项目的实施细节上下很多功夫,例如研究分布式处理引擎和数据分析算法。这并没有错,但不要因为一棵树而错过整片森林。本书将为你打开更广阔的视野,展示如何从大数据项目的规划阶段开始,一步步走向成功。无论是首席信息官、首席技术官、项目经理,还是架构师和开发人员,都能通过本书得到 启迪。 开始规划:思考大数据项目的主要类型 评估和选择数据管理解决方案 降低与技术、团队、需求相关的风险 探索良好的接口设计模式 为项目选择合适的分布式存储系统 规划和实施元数据收集 使用数据管道确保数据完整性 根据并行处理引擎的特征评估处理框架