【问题标题】:When should we go for Spark-sql and when should we go for Spark RDD我们什么时候应该使用 Spark-sql,什么时候应该使用 Spark RDD
【发布时间】:2020-05-31 22:15:13
【问题描述】:

在哪种情况下我们应该更喜欢 spark RDD 来编写解决方案,在哪种情况下我们应该选择使用 spark-sql。我知道 spark-sql 提供更好的性能,并且它最适合结构和半结构数据。但是在 spark Rdd 和 spark-sql 之间选择时,我们还需要考虑哪些其他因素。

【问题讨论】:

  • 有很多可以使用 RDD 解决的用例可以使用具有更高性能和可靠性的 Dataframe/dataset api 来解决。我认为,大多数mllib api 仍然使用 RDD 作为一等公民,并不是所有的都有基于Dataset 的实现,在这种情况下你可以使用 RDD。此外,如果您想要使用 Dataframe 难以实现的更精细级别的处理,您可以使用 RDD。总的来说,尽可能使用 Dataframe/dataset api

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


【解决方案1】:

我认为仍然使用 RDD 的理由不多。

假设您使用的是基于 JVM 的语言,根据 spark 文档,您可以使用 SparkSQL+RDD (DataFrame == DataSet[Row]) 的 DataSet:

Dataset 是 Spark 1.6 中添加的一个新接口,它提供了 RDD 的优势(强类型化、使用强大 lambda 函数的能力)以及 Spark SQL 优化执行引擎的优势。

问题是python不支持DataSet,所以当你使用非结构化数据时,你将使用RDD并失去spark-sql优化。

【讨论】:

    【解决方案2】:

    我发现使用 DF 比 DS 更容易使用 - 后者仍然需要开发恕我直言。对 pyspark 的评论确实仍然相关。

    RDD 仍然方便 zipWithIndex 将 asc 连续的序列号放在项目上。

    DFs / DSs 有一个列式存储并且有更好的催化剂(优化器)支持。

    此外,RDD 的一些事情可能会很痛苦,比如如果需要 JOIN 超过 2 个表,则需要键、值和多步连接。他们是遗产。问题是互联网充满了传统,因此 RDD 爵士乐。

    【讨论】:

      【解决方案3】:

      RDD
      RDD 是跨集群的数据集合,它处理非结构化和结构化数据。它通常是处理数据的功能部分

      DF
      数据框基本上是定义行和列数据的二维对象数组。它类似于数据库中的关系表。数据框只处理结构化数据

      【讨论】:

        猜你喜欢
        • 2021-09-07
        • 2015-12-12
        • 1970-01-01
        • 1970-01-01
        • 2012-09-22
        • 1970-01-01
        • 2023-04-02
        • 2011-04-15
        • 2017-04-10
        相关资源
        最近更新 更多