什么是 Presto?

    用于数据分析和开放式湖仓的快速可靠的 SQL 查询引擎

    对于难以管理针对孤立数据库和存储的多重查询语言和接口的数据工程师来说,Presto 是一个快速可靠的引擎,它为所有数据分析和开放式湖仓提供了一个简单的 ANSI SQL 接口。

    Presto Tech Talk: Intro to Presto and Superset video

    主要创新

    世界上一些最大的公司正在为 Presto 开源项目做出贡献。这些关键创新目前仅在 Linux 基金会 Presto 中提供。

    Presto C++

    Presto 查询执行引擎的完全重写,基于 Velox,这是一种旨在跨计算引擎可组合的最先进的执行引擎。目标是将性能和可扩展性提高 3-4 倍。
    博客 | 文档

    基于历史的优化框架

    HBO 框架通过利用历史执行统计信息,能够实现高级查询优化技术。这种方法通过其独特的成本估算、计划转换以及历史数据的整合,提供了更有效的查询执行策略。
    博客 | 论文

    使用 RaptorX 进行缓存

    将存储与计算分离,以实现低延迟,从而为 OLAP 和交互式用例提供统一、廉价、快速和可扩展的解决方案。
    博客 | 演示

    解耦协调器(又名 Fireball)

    水平扩展协调器并改进 RPC 堆栈。
    Github | 博客

    使用 Presto-on-Spark 进行 ETL

    Presto on Spark 是 Presto 和 Spark 之间的集成,它利用 Presto 的编译器/评估库和 Spark 的大规模处理能力。它在交互式和批处理用例之间实现了统一的 SQL 体验。
    文档

    用户定义函数

    支持动态 SQL 函数(在实验模式下可用)
    文档

    为什么选择 Presto?

    一种语言

    针对不同工作负载的不同引擎意味着你将不得不进行重新平台化。

    使用 Presto,你将获得 1 种熟悉的 ANSI SQL 语言和 1 个数据分析引擎,因此你无需升级到另一个湖仓引擎。Presto 可用于交互式和批处理工作负载,可以处理少量和大量数据,并可以扩展到从几到数千个用户。

    一个接口

    大多数数据团队在其数据湖存储上针对不同工作负载使用不同的引擎,并且每个引擎都有自己的语言和接口。

    Presto 为你提供了一个简单的 ANSI SQL 接口,用于你存储在各种孤立数据系统中的所有数据,帮助你将数据生态系统整合在一起。Presto 的连接器架构使你能够查询数据所在位置的数据。

    快速、可靠和高效

    数据基础设施成本可能会激增,尤其是在数据量和用户工作负载不断增长的专有系统(如数据仓库)中。

    Presto 在 Meta 和 Uber 中经过实战检验,可以扩展以满足不断增长的数据量和工作负载。它比其他引擎更快、更高效,因为它针对大量小型查询进行了优化,因此与专有系统相比,你可以以更优惠的价格获得更好的性能。

    用例

    即席查询

    使用 SQL 在任何时间、任何数据所在位置运行即席查询。Presto 允许你查询数据所在位置的数据,因此你无需将数据 ETL 到单独的系统中。

    报告和仪表盘

    查询多个来源的数据,以构建一个 Presto 视图,用于报告和仪表盘,以实现 Presto 自助式 BI 商业智能。

    开放式湖仓

    通过一个接口,Presto 不仅仅是一个查询引擎,它位于数据生态系统的核心,帮助将所有内容整合在一起,通过大规模解决数据问题。