2016-07-11 43 views
0

據我所知,Spark可以利用兩種不同語法的SQL。Apache Spark - 使用SQL的最快方法?

第一種是使用.sql()功能,例如:

DataFrame df = sqlContext.read().parquet("../loc/of/this"); 
df.registerTempTable("this") 
DataFrame people = sqlContext.sql("SELECT * FROM this GROUP BY that") 

另一種是:

DataFrame people = sqlContext.read.parquet("../loc/of/this") 
people.groupBy("that") 

兩者有什麼區別?是否有性能影響? 謝謝!

回答

1

對於我的經驗,這兩種方式有同樣的表現,可能是第一,火花引擎必須解析或分析SQL查詢字符串,但我認爲這是不降低火花工作

+0

是否有問題拿起存儲或計算能力來註冊臨時表? –

+0

對於我的comprehsion來說,registerTempTable是一種在SparkSQL中命名數據框的方法,但它不會將數據寫入另一種格式,所以沒有區別 –