【问题标题】:RDD, DataFrames, Spark SQL: 360-degree compared? [duplicate]RDD、DataFrames、Spark SQL:360 度对比? [复制]
【发布时间】:2018-11-22 07:13:42
【问题描述】:

同行,

我们需要使用 Spark 2.1 标准化几乎 SQL 工作负载处理。我们目前正在讨论三个选项:RDD、DataFrames 和 SparkSQL。经过一天的对stackoverlow、论文和网络的梳理,我在下面进行了比较。我寻求有关表格的反馈,尤其是有关性能和内存的反馈。提前致谢。

+----------------------------+------------------+-- -------------+------------------------------------------------ ----+ |特色 | RDD |数据框 (DF) |火花 SQL | +----------------------------+------------------+-- -------------+------------------------------------------------ ----+ |星火一等公民 |是 |是 |是 | |本国的? [4] |核心抽象 | API |模块 | |一代 [5] |第一次 |第二|第三| |抽象 [4,5, |低级 API |数据处理 |基于SQL | | Ansi 标准 SQL |无 |一些 |近ansi [5] | |优化 |无 |催化剂 [9] |催化剂 [9] | |性能 [3,4,8 |混合视图 |混合视图 |混合视图 | |记忆 | ? | ? | ? | |编程速度 |慢 |快速 |处理 SQL 工作负载时更快 | +----------------------------+------------------+-- -------------+------------------------------------------------ ----+
[3] Introducing DataFrames in Apache Spark for Large Scale Data Science by data bricks   
[4] Spark RDDs vs DataFrames vs SparkSQL by Hortonworks  
[5] A Tale of Three Apache Spark APIs: RDDs, DataFrames, and Datasets When to use them and why by data bricks  
[6] Introducing Apache Spark 2.0 by data bricks  
[7] Spark RDD vs Spark SQL Performance comparison using Spark Java APIs  
[8] Spark sql queries vs dataframe functions on Stackoverflow  
[9] Spark SQL: Relational Data Processing in Spark by data bricks, MIT, UC Berkeley

编辑以解释问题有何不同而不是重复:

感谢姐妹问题的参考。虽然我看到了详细的讨论和一些重叠,但我看到的很少(不是?):
(a) 关于 SparkSQL 的讨论,
(b) 三种方法的内存消耗比较,以及
(c) Spark 2.x 的性能比较(在我的问题中更新)。它引用了[4](有用),它基于spark 1.6

我认为我修改后的问题仍未得到解答。请求取消标记为重复。

【问题讨论】:

  • 感谢妹子问题的参考。虽然我看到了详细的讨论和一些重叠,但我看到的很少(不是?):(a)关于 SparkSQL 的讨论,(b)三种方法的内存消耗比较,以及(c)Spark 2.x 的性能比较(更新在我的问题中)。它引用了基于 spark 1.6 的 [4](有用),我认为我修改后的问题仍未得到解答。 :-)

标签: apache-spark pyspark apache-spark-sql


【解决方案1】:

我的个人意见:

  • 在性能方面,您应该使用 Dataframes/Datasets 或 Spark SQL。 RDD 没有被Catalyst OptimizerTungsten project 优化。
  • 在灵活性方面,我认为使用 Dataframe API 会比 SQL 提供更高的可读性和动态性,特别是使用 Scala 或 Python,尽管您可以根据需要混合使用它们李>
  • 我会仅在您想要迁移 Hive 工作负载或通过 ODBC 连接以从 BI 工具启动 Thrift 服务器时使用 SQL

【讨论】:

  • 可读性是主观的,我发现 SQL 比任何 API 都更容易被更广泛的用户理解。
猜你喜欢
  • 2017-07-15
  • 2019-10-20
  • 1970-01-01
  • 2015-07-27
  • 1970-01-01
  • 1970-01-01
  • 2020-10-23
  • 1970-01-01
相关资源
最近更新 更多