[英]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.