可靠的企业战略,数字化转型,智能化转型和企业架构智库

【技术选型】Spark SQL vs Presto

Spark SQL vs Presto

Spark SQL与Presto之间的区别

简单来说 Presto 就是“SQL查询引擎”,最初是为Apache Hadoop开发的。它是一个开源的分布式SQL查询引擎,用于对各种大小的数据集运行交互式分析查询。

Spark SQL是一个分布式内存中计算引擎,在结构化和半结构化数据集之上有一个SQL层。由于它是在内存中处理的,所以在Spark SQL中处理速度会很快。

Spark SQL和Presto (Infographics)的头对头比较

下面是Spark SQL和Presto之间的前7个比较:

Spark SQL vs Presto

Spark SQL和Presto之间的关键区别

下面是关于Presto和Spark SQL之间的关键区别的列表:

  • Apache Spark引入了一个用于处理结构化数据的编程模块,称为Spark SQL。Spark SQL包含一个称为数据帧的编码抽象,它可以作为分布式SQL查询引擎。
  • Presto创立的初衷是为了实现交互式分析和商业数据仓库的速度,使组织规模能够与Facebook相匹配。
  • Spark SQL是Spark Core上的一个组件,它引入了名为SchemaRDD(弹性分布式数据集)的新数据抽象,它提供了对结构化/半结构化数据的支持。
  • Presto被设计为使用MapReduce作业(如Hive或Pig)查询HDFS数据的工具的替代品,但Presto并不仅限于HDFS。
  • Spark SQL遵循内存中处理,这提高了处理速度。Spark被设计用于处理广泛的工作负载,如批处理查询、迭代算法、交互式查询、流媒体等。
  • Presto能够执行联邦查询。下面是快速联邦查询的示例

让我们假设任何RDMS 表sample1与HIVE表sample2 ,

' Testdb '是hive和MYSQL中的数据库。使用Presto,我们可以评估数据使用在一个单一的查询一旦他们的连接器配置正确,如下所示-

presto> <Function (select/Group by ..etc)> hive.Testdb.sample2

  • Spark SQL架构由Spark SQL, Schema RDD, and Data Frame组成
    • 数据帧是数据的集合;数据被组织成指定的列。从技术上讲,它与关系数据库表相同。
    • 模式RDD: Spark Core包含称为RDD的特殊数据结构。Spark SQL适用于模式、表和记录。因此,用户可以使用模式RDD作为临时表。这样用户就可以把这个模式称为数据框架
  • Data Frame 能力:数据框架在单个节点集群上处理从千字节到千兆字节的数据,
  • Data Frame支持不同的数据格式(CSV, elasticsearch, Cassandra等)和存储系统(HDFS, HIVE表,MySQL等),它可以集成与所有大数据工具/框架通过Spark-Core,并提供API的语言,如Python, Java, Scala,和R编程。
  • Presto是一个分布式引擎,可以在集群设置中工作。Presto体系结构易于理解和扩展。Presto客户端(CLI)将SQL语句提交给管理处理的主守护进程协调器。
  • 使用Presto的公司:Facebook、Netflix、Airbnd、Dropbox等。
  • Apache Spark用例可以在金融、零售、医疗保健和旅游等行业中找到。许多电子商务网站,如eBay、阿里巴巴、Pinterest都在其电子商务平台上使用Spark SQL来分析数百PB的数据。

比较Spark SQL和Presto表

下面是SQL和Presto之间最顶层的比较。

 比较的基础

Presto Spark SQL

生态系统/平台

 Hadoop、大数据处理等  Spark框架、大数据处理等
目的

Presto是为在大数据(巨大的工作负载)上运行SQL查询而设计的。

它是由Facebook设计来处理他们巨大的工作量。

Spark SQL是Apache Spark Core的组件之一。

Spark Core是Spark平台的基本执行引擎

安装
  • Presto是一个用于处理pet字节数据的分布式SQL查询引擎,它运行在一个集群上,就像设置了一组机器一样。
  • 完整的Presto集群设置包括一个协调器(管理节点)和多个worker。用户从客户机(即Presto CLI)向协调器提交查询。协调器解析、分析和计划查询执行,然后将查询处理分发给工作程序。
  • 如果安装并配置Apache Spark集群,则Spark SQL设置将是开箱即用的
  • Apache Spark是Hadoop的子项目。
  • Apaches Spark是一种基于集群的大数据处理技术,旨在实现快速计算。

功能/特性

Presto允许对许多数据源进行数据查询;例如,数据可能驻留在数据存储中:Hive、Cassandra、RDBMS和其他一些专有数据存储中。 Spark SQL提供了使用数据框架和JDBC连接器与其他数据源集成的灵活性。

连接器

支持

Presto支持可插拔连接器。这些连接器为查询提供数据集。

下面是presto中可用的几个预先存在的连接器,同时presto还提供了与定制连接器连接的能力。

下面是it支持的一些连接器

  • Hadoop/Hive
  • Cassandra
  • Teradata
  • PostgreSQL
  • Oracle etc

数据框架接口允许不同的数据源在Spark SQL上工作。

Spark SQL包括一个具有行业标准JDBC和ODBC连接的服务器模式。

联邦查询

Presto支持联邦查询。Presto可以配置连接到不同的DBs,一旦配置;它的CLI可以用来启动“联邦查询”。

在一个Presto查询中,用户可以组合来自多个数据源的数据并运行查询。

Spark SQL带有一个使用JDBC连接其他数据库的内建特性,即“JDBC到其他数据库”,它有助于联邦特性。

Spark利用scala/python API使用JDBC:数据库特性创建数据框架,但它也可以直接与Spark SQL Thrift server一起工作,并允许用户像其他hive/ Spark表一样毫不费力地查询外部JDBC表。

谁在使用

数据分析师、数据工程师、数据科学家等等 数据分析师、数据工程师、数据科学家、Spark开发人员等等

结论

Spark SQL和Presto都是市场上可用的SQL分布式引擎。

Presto在处理双类型查询时非常有用,而Spark SQL在大型分析查询中的性能领先。与配置相比,Presto的设置比Spark SQL简单。Spark SQL和Presto在市场上的地位是平等的,它们解决的是不同类型的业务问题。

推荐的文章

这是Spark SQL与Presto的一个指南。在这里,我们讨论了Spark SQL与即时头对头比较、关键区别以及信息图和比较表。你也可以看看下面的文章来了解更多-

  • Apache Spark vs Apache Flink -你需要知道的8件有用的事情
  • Apache Hive vs Apache Spark SQL - 13惊人的差异
  • Hadoop和SQL之间的最佳6个比较
  • Hadoop与Teradata——有价值的区别

 

原文:https://www.educba.com/spark-sql-vs-presto

本文:http://jiagoushi.pro/node/1129

讨论:请加入知识星球【首席架构师圈】或者小号【jiagoushi_pro】