Datalake 与 Lakehouse:Apache Kylin 与 Trino 在商业智能分析方面的比较
top of page

Datalake 与 Lakehouse:Apache Kylin 与 Trino 在商业智能分析方面的比较

已更新:8月18日

在当今瞬息万变的商业环境中,拥有合适的数据分析和商业智能工具至关重要。面对海量数据,企业需要高效的方法来处理和分析数据,以便做出更明智的决策。Apache Kylin 和 Trino(也称为 Presto)是这一领域中脱颖而出的两个强大平台。虽然两者都在分析中发挥着重要作用,但对于希望有效利用这些技术的数据专业人士来说,了解它们之间的区别至关重要。

本文对 Apache Kylin 和Trino进行了比较,重点关注它们的查询功能和聚合方法,以确定哪种最适合您的分析需求。

用户 SQL 争论
Users SQL Wrangling

了解 Apache Kylin


Apache Kylin是一款开源分析引擎,旨在实现大数据平台上的快速 OLAP(联机分析处理)。Kylin 依托 Spark 和 Hadoop,允许用户创建数据立方体数据模型,从而实现快速查询响应。据 Apache 称,其预聚合功能可将查询速度比传统方法提高 100 倍。


Kylin 非常适合需要快速、可靠洞察的商业智能应用,尤其是在处理大型数据集时——企业经常面临这个问题。Kylin 提供连接到 BI 工具(例如 Tableau 和Power BI)的驱动程序。Kylin 在市场上的竞争对手包括 Microsoft Analysis Services 和云平台、IBM Cognos、SAP Business Objects、Looker、Qlick 等。


了解 Trino (Presto)

Trino,最初名为 Presto,是一个开源 SQL 查询引擎,允许分析专业人员实时查询来自各种来源的数据。它非常适合数据分析师需要跨多个数据湖和关系数据库运行复杂查询的场景


借助 Trino,用户无需准备单个数据仓库即可进行集成数据分析,从而能够灵活应对现代分析挑战。据其开发者介绍,Trino 可以在几秒钟内查询 PB 级数据,使其成为实时分析的理想替代方案。Trino 的竞争对手包括 AWS Glue、Databricks、Google BigQuery、AWS Redshift Spectrum、Apache Drill 和 Clickhouse 等。


比较主要功能

Kylin、Trino 及其同类产品在关键特性和功能上存在重叠。所有产品都试图捕捉核心的 OLAP(数据立方体)功能,并通过即席查询和批量查询来处理多源/多格式数据。


许多企业正在尝试查询所有/任何格式的传入数据,并“实时”地将这些数据以多维度聚合起来。没有任何工具集能够通过简单的部署实现这一点,而且如果没有元数据存储来对数据进行分类,这根本不可能实现。


要实现“实时”聚合并深入到详细数据,仍然需要额外的工程和配置才能接近这一目标。这还得在进行异常和质量清理之前进行,理想情况下,这些工作应该在为训练 AI/ML 模型播种数据之前完成。


为了清楚地了解 Apache Kylin 和 Trino 之间的比较情况,让我们并排看一下它们的主要功能。


性能和速度

特征
Apache Kylin
Trino(Presto)

查询性能

预先汇总的数据可实现更快的响应

根据数据源的复杂性和数据源的联合,查询可能会遇到延迟

数据大小处理

使用数据立方体技术针对处理海量数据集进行了优化

有效管理小型和大型数据集

Apache Kylin 的预聚合功能显著提升了查询性能。相比之下,Trino 虽然可以高效处理大型数据集,但其实时查询有时会引入延迟,尤其是在处理更大、更复杂的数据源时。


数据建模

Apache Kylin
Trino(Presto)

需要结构化数据立方体模型进行优化

无模式;无需模型,直接从数据源查询。如果可用,则使用源数据模型。

Kylin 对数据 Cube 模型的需求使其灵活性有所欠缺,但查询速度却显著提升。Trino 的无模式特性允许用户即时探索各种数据源,增强了其适应性,但并非适用于所有场景。


SQL功能

特征
Apache Kylin
Trino(Presto)

联合查询

否 --> 有可能使用 Hive 和下推

是的 --> RDBMS、noSQL、DataLakes

SQL标准

Kylin 5.0 支持 ANSI SQL 2003

提供完整的 ANSI SQL 功能

临时查询和批量查询

否 --> 需要额外的工程

是 --> 内置功能

Trino 凭借其对 ANSI SQL 的全面支持而脱颖而出,使其能够轻松执行复杂查询。相比之下,Kylin 严格的多维数据集结构带来了一些限制,但新的 5.0 版本也兼容 ANSI SQL 2003。


兼容性和生态系统

特征
Apache Kylin
Trino(Presto)

数据源

Hadoop、Hive及其底层数据源(Iceberg、Parquet、MySQL、PostgresSQL等)

数据源包括MySQL、PostgreSQL、Parquet、MongoDB等。


Trino 能够与各种数据源连接,从而提供更大的灵活性。而 Kylin 虽然在以 Hadoop 为中心的生态系统中效率很高,但在适应各种数据环境时可能会遇到困难。扩展至 Hive 及其连接的数据源(Iceberg、Parquet、ORC、RDBMS、JDBC 源等)可增强 Kylin 对更多数据的扩展能力。


商业智能:查询执行

查询执行技术是区分这两个平台的关键。以下是两者的处理方式:


Apache Kylin 中的查询执行


  1. 数据建模:用户在数据立方体中定义指标和维度,为优化查询奠定基础。它使用维度和度量实现多维数据模型。

  2. 预聚合:Kylin 根据这些定义预聚合数据,确保快速访问指标。使用 Hive 时,可以将其他数据源纳入此聚合步骤。

  3. 即时执行:当查询运行时,Kylin 会检索这些预先聚合的结果,从而显著减少处理时间。

预聚合方法在生成必须快速刷新的报告或用户从 BI 工具按需查询时特别有用。


Trino 中的查询执行


  1. 实时查询:用户可以直接针对不同的数据源执行 SQL,利用实时数据。

  2. 数据联合:Trino 可跨系统无缝查询,无需事先映射数据。

  3. 优化性能:Trino 利用优化技术来减少延迟并提高查询速度。

虽然 Trino 无法与 Kylin 的预聚合速度匹敌,但其方法提供了对实时分析至关重要的灵活性。


聚合机制

聚合对于解读数据洞察至关重要。以下是 Kylin 和 Trino 实现聚合的方法:


Apache Kylin 聚合


  1. Cube Aggregation :Kylin 在数据 Cube 创建期间进行聚合,重点关注定义的指标或度量。

  2. 预先计算:这使用户能够在查询期间快速访问预先计算的指标。

  3. 粒度控制:用户可以设置聚合的详细级别,从而可以灵活地洞察钻取、上卷和下卷。

Trino 聚集


  1. 动态聚合:Trino 即时执行实时聚合,从而实现快速数据汇编。

  2. SQL 函数:分析师可以利用内置的 SQL 聚合函数进行复杂的计算。

  3. 分配资源负载:Trino 有效地利用分布式资源来管理聚合期间的大数据操作。

Trino 提供实时洞察,但需要消耗更多资源,而 Kylin 则依赖预先计算的结果来提高效率。


理想用例


在 Apache Kylin 和 Trino 之间进行选择取决于具体的业务场景,如下所示:


Apache Kylin 的最佳场景


  • 海量数据的快速性能:对于处理需要快速查询结果的大量数据集的组织来说,Kylin 是最佳选择。
  • 结构化报告:如果定期报告涉及稳定指标,Kylin 的预聚合会优化这些事件。
  • 繁重的 OLAP 工作负载:Kylin 在利用全面 OLAP 功能的环境中蓬勃发展。

Trino 的最佳应用场景


  • 多数据源:当分析需要跨多个数据系统集成时,Trino 提供了极大的灵活性。
  • 实时决策:在需要立即了解数据的情况下,Trino 的动态查询能力非常宝贵。
  • 复杂的 SQL 需求:如果您的团队需要复杂的 SQL 功能,Trino 可确保您能够通过 SQL 回答任何问题。

最后的想法


总而言之,Apache Kylin 和 Trino 在业务查询和智能分析领域各有优势。Kylin 在性能要求较高时表现优异,尤其是在预聚合数据和 Cube 技术方面。而 Trino 则在灵活性和实时查询能力方面更胜一筹,能够有效兼容各种数据源。


对于数据专业人员来说,了解每个平台的优势和劣势对于选择合适的工具至关重要。优先了解组织的数据架构、性能需求和分析目标,以增强您的整体策略。


没有任何单一工具能够同时进行实时数据查询和全面分析,并提供数据质量干预来为 AI/ML 模型提供训练。Apache Spark 作为处理引擎,与许多开源工具结合使用,无疑是一种普遍的方案。因此,如果您采用开源驱动的分析,Spark 技能必不可少。通过将任一工具的功能与您的业务需求相结合,您可以显著增强数据驱动的决策能力。


高性能数据分析设置的广角视图
A robust data analysis environment showcasing technologies in action.


bottom of page