我想了解火花hiveContext
。 當我們寫hiveContext
像Spark HiveContext:Spark Engine或Hive引擎?
sqlContext=new HiveContext(sc)
sqlContext.sql("select * from TableA inner join TableB on (a=b) ")
是使用星火引擎或蜂房引擎它使用查詢?我相信上面的查詢是通過Spark Engine執行的。但是,如果這就是爲什麼我們需要數據框?
我們可以盲目地複製sqlContext.sql("")
中的所有配置單元查詢,並且在不使用數據框的情況下運行。
通過DataFrames,我的意思是這樣的TableA.join(TableB, a === b)
我們甚至可以使用SQL命令執行聚合。請問任何人請澄清這個概念?如果使用數據框連接有什麼好處,而不是sqlContext.sql()
加入? 連接只是一個例子。 :)
SQL是一種查詢語言,必須由查詢處理器編譯。 Dataframe API是一種(一種)查詢語言,對於人類來說,讀/寫更加複雜,但查詢處理器更容易。 –
請注意,由於Scala中的Lambda表達式使用大量樣板轉換和控件(參見Spark Summit最近的演示文稿)來實現,因此某些表達式在SQL中編寫時會更快。 –
還要注意,當寫入Hive表時,SQL INSERT將確保文件格式嚴格遵守Hive結構,否則情況並非總是如此。 –