用于在HDFS上查询数据的纯火花与火花SQL

时间:2015-03-24 15:53:55

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

我在hdfs集群上有(表格)数据,需要对它进行一些稍微复杂的查询。我希望将来可以与其他数据一起多次面对同样的情况。所以,问:

在实现此类任务时,选择使用位置(纯)Spark以及在何处使用Spark-SQL需要考虑哪些因素?

以下是我能想到的选择因素:

  1. 熟悉语言: 就我而言,我更像是一个数据分析师而不是数据库人,所以这会让我使用spark:我更愿意考虑如何(有效地)在Java / Scala中实现数据选择而不是SQL。但这主要取决于查询。

  2. 序列化: 我认为可以运行Spark-SQL查询而不将home-made-jar + dep发送给spark worker(?)。但是,返回的数据是原始的,应该在本地转换。

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

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

1 个答案:

答案 0 :(得分:1)

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

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

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

相关问题