技术控们,你们知道大数据查询性能谁更强吗?
经过对 Presto 和 Hive 的性能做了大量的对比测试,最终结果表明: Presto 的平均查询性能是 Hive 的 10 倍!
由于 Presto 的数据源具有完全解耦、高性能,以及对 ANSI SQL 的支持等特性,使得 Presto 在 ETL、实时数据计算、 Ad-Hoc 查询和实时数据流分析等多个业务场景中均能发挥重要的作用。
一、实时数据查询:
我们看看小P在实时数据计算方面又有哪些卓越表现呢?
由于 Presto 卓越的性能表现,使得 Presto 可以弥补 Hive 无法满足的实时计算空白,因此可以将 Presto 与 Hive 配合使用:对于海量数据的批处理和计算由 Hive 来完成;对于大量数据(单次计算扫描数据量级在 GB 到 TB)的计算由 Presto 完成。 Presto 能够完成的实时计算实际上分为以下两种情况。
1. 快照数据实时计算
在这种情况下,可以基于某个时间点的快照数据进行计算,但是要求计算过程快速完成( 200ms~20min)。
2. 完全实时计算
要完成完全实时计算,需要满足以下两个条件。
( 1)使用的基准数据要实时更新,时刻保持与线上实际数据库中的数据完全一致。
( 2)计算过程要能够快速完成。
在某公司的实际使用场景中, Presto 被用于下述两种业务场景中。
基于 T+1 数据的实时计算
在这种业务场景中,用户并不要求基准数据的实时更新,但是要求每次查询数据都能够快速响应。需要 Presto 和 Hive 配合使用来满足实际的业务需求。每天凌晨通过azkaban 调度 Hive 脚本,根据前一天的数据计算生成中间结果表,生成完毕之后使用 Presto 查询中间结果表,得出用户最终所需要的数据。满足该业务场景的解决方案如图
基于 RDBMS 的实时计算
在这种业务场景中,用户要求查询的数据完全实时,即只要业务库中的数据发生改变,通过 Pr