Presto是Facebook推出的一个针对大数据式的开源分布式SQL查询引擎,具有存储数据和计算分析能力,而且支持众多常见的数据源,还能对其进行混合计算分析,同时扩展性也非常不错,可进行扩展开发。
功能特点
1.多数据源、混合计算支持:支持众多常见的数据源,并且可以进行混合计算分析;
2.大数据:完全的内存计算,支持的数据量完全取决于集群内存大小。他不像SparkSQL可以配置把溢出的数据持久化到磁盘,Presto是完完全全的内存计算;
3.高性能:低延迟高并发的内存计算引擎,相比Hive(无论MR、Tez、Spark执行引擎)、Impala 执行效率要高很多。根据Facebook和京东的测试报告,至少提升10倍以上;
4.支持ANSI SQL:这点不像Hive、SparkSQL都是以HQL为基础(方言),Presto是标准的SQL。用户可以使用标准SQL进行数据查询和分析计算;
5.扩展性:有众多 SPI 扩展点支持,开发人员可编写UDF、UDTF。甚至可以实现自定义的Connector,实现索引下推,借助外置的索引能力,实现特殊场景下的 MPP;
6.流水线:Presto 是基于PipeLine进行设计,在大量数据计算过程中,终端用户(Driver)无需等到所有数据计算完成才能看到结果。一旦开始计算就可立即产生一部分结果返回,后续的计算结果会以多个Page返回给终端用户(Driver)。
配置要求
Mac OS X或Linux
Java 8 Update 151或更高版本(8u151 +),64位。支持Oracle JDK和OpenJDK。
Maven 3.3.9+(用于建筑)
Python 2.4+(用于与启动脚本一起运行)
安装方法
Presto安装:
Presto是一个标准的Maven项目。只需从项目根目录运行以下命令:
./mvnw clean install
在第一个构建中,Maven将从Internet下载所有依赖项并将它们缓存在本地存储库(~/.m2/repository)中,这可能会花费大量时间。随后的构建将更快。
Presto有一套全面的单元测试,可能需要几分钟才能运行。您可以在构建时禁用测试:
./mvnw clean install -DskipTests