簡體   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