您当前的位置: 首页 >  ar

宝哥大数据

暂无认证

  • 0浏览

    0关注

    1029博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

Spark SQL 与 Presto SQL 对比

宝哥大数据 发布时间:2021-08-24 14:28:49 ,浏览量:0

一、Spark SQL 与 Presto 之间的差异

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

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

二、 Spark SQL 和 Presto 对比 SQL vs Presto 对比项PrestoSpark SQL生态系统/平台 Hadoop、大数据处理等 Spark 框架、大数据处理等目的 Presto 设计用于在大数据(巨大的工作负载)上运行 SQL 查询。 它是由 Facebook 设计的,用于处理他们巨大的工作量。Spark SQL 是 Apache Spark Core 的组件之一。 Spark Core 是 Spark 平台的基础执行引擎安装
  • Presto 是一个分布式 SQL 查询引擎,用于处理 pet 字节的数据,它在集群上运行,就像设置了一组机器一样。
  • 完整的 Presto 集群设置包括一个协调器(管理器节点)和多个工作器。用户从 Presto CLI 客户端向协调器提交查询。协调器解析、分析和计划查询执行,然后将查询处理分配给工作人员。
  • 如果您安装和配置 Apache Spark Cluster,Spark SQL 设置将是开箱即用的
  • Apache Spark 是 Hadoop 的子项目。
  • Apaches Spark 是一种基于集群的大数据处理技术,专为快速计算而设计。
能力/特点Presto 允许对多个数据源进行数据查询;例如,数据可能驻留在数据存储中:Hive、Cassandra、RDBMS 和其他一些专有数据存储。Spark SQL 使用数据框架和 JDBC 连接器提供了与其他数据源集成的灵活性。支持连接器 Presto 支持可插拔连接器。这些连接器为查询提供数据集。

下面是 presto 中可用的几个预先存在的连接器,而 Presto 也提供了与自定义连接器连接的能力。 下面是它支持的一些连接器

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

 

Data Frame 接口允许不同的数据源在 Spark SQL 上工作。 Spark SQL 包括具有行业标准 JDBC 和 ODBC 连接的服务器模式。联合查询Presto 支持联合查询。Presto 可以配置为连接不同的 DB,并且一旦配置;它的 CLI 可用于启动“联合查询”。 在一个 Presto 查询中,用户可以组合来自多个数据源的数据并运行查询。Spark SQL 带有一个内置功能,可以使用 JDBC 连接其他数据库,即“JDBC 到其他数据库”,它有助于联邦功能。 Spark SQL 带有一个内置功能,可以使用 JDBC 连接其他数据库,即“JDBC 到其他数据库”,它有助于联邦功能。谁使用?数据分析师、数据工程师、数据科学家等数据分析师、数据工程师、数据科学家、Spark 开发人员等 三、SparkSQL/PrestoSQL 语法差异 idSpark SQLPresto SQL差异1 date_add(start_date, num_days) date_add(unit, value, timestamp) unit = second,minute,hour,day,week,month,quarter,year 1)函数入参不一样 2 datediff(endDate, startDate) SELECT datediff('2009-07-31', '2009-07-30'); date_diff(unit, timestamp1, timestamp2) unit = second,minute,hour,day,week,month,quarter,year Returns timestamp2 - timestamp1 expressed in terms of unit. 1)函数名称不一样,下划线 2)函数入参顺序不一样,相反 3 1.current_date获取当前日期 2018-04-09 2.current_timestamp/now()获取当前时间 2018-04-09 15:20:49.247 current_date current_time current_timestamp 4 1.unix_timestamp返回当前时间的unix时间戳 SELECT unix_timestamp('2016-04-08', 'yyyy-MM-dd');   1460041200 2.from_unixtime将时间戳换算成当前时间,to_unix_timestamp将时间转化为时间戳 SELECT from_unixtime(0, 'yyyy-MM-dd HH:mm:ss');  1970-01-01 00:00:00 SELECT to_unix_timestamp('2016-04-08', 'yyyy-MM-dd');   1460041200 from_unixtime(unixtime) from_unixtime(unixtime, string) 5 to_date/date将字符串转化为日期格式,to_timestamp(Since: 2.2.0) 6 add_months返回日期后n个月后的日期 SELECT add_months('2016-08-31', 1);   2016-09-30 7 last_day(date),next_day(start_date, day_of_week) SELECT last_day('2009-01-12');  2009-01-31 8 trunc截取某部分的日期 第二个参数 ["year", "yyyy", "yy", "mon", "month", "mm"] SELECT trunc('2009-02-12', 'MM'); 2009-02-01 date_trunc ["YEAR", "YYYY", "YY", "MON", "MONTH", "MM", "DAY", "DD", "HOUR", "MINUTE", "SECOND", "WEEK", "QUARTER"] SELECT date_trunc('2015-03-05T09:32:05.359', 'HOUR'); 2015-03-05T09:00:00 date_trunc(unit, x) unit = second,minute,hour,day,week,month,quarter,year 函数参数不一样9SELECT date_format('2016-04-08', 'y'); 10nvl(xxxx,'')coalesce(xxx,'')函数名不一样11select get_json_object(json_str, '$.name');json_extract_scalar(json_str, '$.name')get单层json 函数名不一样12get_json_object(json_str, '$.item.tabid');json_extract_scalar(json_str, '$.item.tabid')get多层json 函数名不一样13get_json_object(json_str, '$.item.uss_rule[0]');json_extract(json_str, '$.item.uss_rule[0]')get json数组 函数名不一样14msg['isBackgroundMode']element_at(msg,'isBackgroundMode')hashmap元素的引用 语法格式不一样15select student, score from tests lateral view explode(split(scores, ',')) t as score;select student, score from tests cross json unnest(split(scores, ',') as t (score);列转行 语法格式不一样16 四、结论

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

Presto 在涉及 BI 类型查询时非常有用,而 Spark SQL 在大型分析查询中在性能方面处于领先地位。在配置方面进行比较时,Presto 设置比 Spark SQL 容易。Spark SQL 和 Presto 都站在市场上并解决不同类型的业务问题。

关注我的公众号【宝哥大数据】

在这里插入图片描述

参考: https://www.educba.com/spark-sql-vs-presto/?source=leftnav

关注
打赏
1587549273
查看更多评论
立即登录/注册

微信扫码登录

0.0440s