繁体   English   中英

当您可以在spark-sql中执行大多数操作时,为什么要使用spark核心API(RDD)

[英]why use spark core API (RDD) when you can do most of it in spark-sql

我正在学习大数据处理的火花。 人们推荐使用HiveContext超过SparkSqlContext 并建议您使用dataframes而不是直接使用rdd

Spark-sql似乎已被查询计划程序高度优化,因此,与通过scala(或python ...)使用Core api(RDD)相比,使用spark-sql似乎是更好的选择。 我有什么想念的吗?

简短的答案:正确,建议在大多数用例中使用spark-sql。

更长的答案:

首先,这不是“ Scala vs. spark-sql”的问题,而是“ Spark Core API(RDD)vs. spark-sql”的问题。 语言选择与这种争论是正交的:RDD和spark-sql都有Scala API(以及Java和Python API),因此您可能将Scala与spark-sql结合使用,例如:

val sc: SparkContext // An existing SparkContext.
val sqlContext = new org.apache.spark.sql.SQLContext(sc)
val df = sqlContext.read.json("people.json").registerTempTable("t1")

sqlContext.sql("SELECT * FROM t1 WHERE ...")

所以-是的,使用SQL编写大多数“繁重的工作”是有道理的,但是周围会有一些Scala(或Java或Python)代码。

现在,对于“ RDD与SQL”问题-如上所述,通常建议使用SQL,因为它为Spark提供了优化的空间,这与RDD操作不同,在该操作中,开发人员指示Spark确切地做什么和如何进行传递。 Spark引擎不透明的转换。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM