2016-03-23 81 views
1

我是Spark SQL新手,但知道配置單元查詢執行框架。我想了解spark如何執行sql查詢(技術描述)?在Hive上執行Spark SQL查詢

如果我火了以下命令

val sqlContext = new org.apache.spark.sql.hive.HiveContext(sc) 
sqlContext.sql("select count(distinct(id)) from test.emp").collect 

在蜂巢它會轉換成地圖,減少工作,但它被如何星火執行?

hive metastore將如何進入圖片?

在此先感謝。

回答

0

簡要回答您的問題:不,HiveContext不會啓動MR作業。你的SQL查詢將仍然使用火花引擎

我將從火花文件引用:

除了基本SQLContext,你還可以創建一個HiveContext,它提供了所提供的功能的超基本的SQLContext。其他功能還包括使用更完整的HiveQL解析器編寫查詢,訪問Hive UDF以及從Hive表讀取數據的能力。要使用HiveContext,您不需要具有現有的Hive安裝程序,並且所有可用於SQLContext的數據源仍可用。 HiveContext只是單獨打包,以避免在默認的Spark構建中包含Hive的所有依賴項。如果這些依賴關係對您的應用程序不是問題,那麼建議在1.3版本的Spark中使用HiveContext。未來的版本將着力引進SQLContext高達功能平價與HiveContext

所以HiveContext用於火花,以提高查詢解析和訪問現有的蜂巢表,甚至還堅持你的結果DataFrames /桌。實際上,Hive可以使用Spark作爲執行引擎,而不是使用MR或tez。

Hive metastore是有關Hive表的元數據。而當使用HiveContext時,spark可以使用這種Metastore服務。請參閱文檔:http://spark.apache.org/docs/latest/sql-programming-guide.html

+0

SQL語句解析是由HiveQl解析器完成還是Spark將解析它? – Shashi

+0

我不確定我是否理解你的問題,但我會這樣說:所有的工作都是由Spark完成的。 Spark不會重新發明輪子,因此它使用Hive解析的功能。我希望能回答你的問題;) – user1314742

+0

是否有任何可用於Spark + Hive交互的體系結構圖? – Shashi