【问题标题】:Pure spark vs spark SQL for quering data on HDFS用于在 HDFS 上查询数据的纯 spark 与 spark SQL
【发布时间】:2015-05-28 00:50:55
【问题描述】:

我在 hdfs 集群上有(表格)数据,需要对其进行一些稍微复杂的查询。我预计未来会多次面对同样的情况,还有其他数据。所以,问题:

在执行此类任务时,选择在哪里使用(纯)Spark 以及在哪里使用 Spark-SQL 需要考虑哪些因素?

这是我能想到的选择因素:

  1. 熟悉语言: 就我而言,我更像是一名数据分析师,而不是一名数据库专家,因此这将引导我使用 spark:我更愿意考虑如何(有效地)在 Java/Scala 中实现数据选择,而不是在 SQL 中。然而,这主要取决于查询。

  2. 序列化: 我认为一个人可以运行 Spark-SQL 查询,而无需将自制的 jar+dep 发送给 spark 工作者(?)。但是,返回的数据是原始数据,应该在本地进行转换。

  3. 效率: 我不知道两者之间有什么区别。

我知道这个问题对于 SO 来说可能过于笼统,但也许不是。那么,有更多知识的人可以提供一些见解吗?

【问题讨论】:

    标签: hadoop apache-spark apache-spark-sql


    【解决方案1】:

    关于第 3 点,根据您的输入格式,当您使用纯 Spark 与 Spark SQL 时,扫描数据的方式可能会有所不同。例如,如果您的输入格式有多个列,但您只需要其中的几列,则可以使用 Spark SQL 跳过检索,而这在纯 Spark 中实现起来有点棘手。

    Spark SQL 有一个查询优化器,当使用 DataFrame 或查询语句时,生成的查询将通过优化器,以便更有效地执行。

    Spark SQL 不排除 Spark;组合使用可能是最好的结果。

    【讨论】:

    • 关于 Spark-SQL 优化的有趣点。我觉得我了解纯 Spark 代码会引发哪些集群通信和计算。但我不太了解 spark SQL 的作用,也不知道如何。
    • 关于 Spark 的优点不排除 Spark-SQL。这不是我的意思,我稍微改述了我的问题。
    • 最后,Spark SQL 会根据您的查询生成一个 Spark 作业,以便在 Spark 集群上执行。这里有一些关于新 DataFrame API 的介绍性幻灯片:slideshare.net/databricks/…
    • 我在 spark 1.1.1(不是我的集群)上运行,所以没有 DataFrame :-(
    • 您应该考虑投票支持更新的版本,因为在 1.2+ 中有很多修复和优化。此外,1.3 中 DataFrame 中围绕 ETL 的 API 比 1.2(及更早版本)中的 SchemaRDD 好得多。
    猜你喜欢
    • 2017-04-23
    • 2016-05-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-06-07
    • 1970-01-01
    • 2015-10-05
    相关资源
    最近更新 更多