2017-04-24 75 views
1

我是新來Spark我試圖訪問HiveSpark如何訪問蜂巢表火花

1)創建星火語境

val hc=new HiveContext(sc) 

val hivetable= hc.sql("Select * from test_db.Table") 

我的問題是,我得到了表到星火。

1)爲什麼我們需要註冊表?

2)我們可以直接執行SQL operations仍然爲什麼我們需要Dataframe功能 像Join, Select, Filter ...等?

是什麼讓SQL Query`和數據幀Operations之間的兩種操作差異

3)什麼是星火優化?它是如何工作的?

回答

1
  1. 如果您使用Spark HiveContext訪問Hive表,則不需要註冊臨時表。將DataFrame註冊爲臨時表允許您對其數據運行SQL查詢。假設您正在從某個位置的某個文件訪問數據,並且希望對此數據運行SQL查詢。 然後您需要從Row RDD中獲得createDataframe,並且您將在此DataFrame上註冊臨時表以運行SQL操作。要對該數據執行SQL查詢,您需要在代碼中使用Spark SQLContext

  2. 這兩種方法都使用完全相同的執行引擎和內部數據結構。一天結束時,所有事情都歸結爲開發人員的個人喜好。

    可以說DataFrame查詢更容易以編程方式構建,並且 提供了最小的類型安全性。

    普通的SQL查詢可以更加簡明易懂。 也有便攜式,可用於每種支持的語言沒有任何修改。隨着HiveContext這些也可以用來揭露一些功能,可以在其他方面無法訪問(例如UDF不星火包裝

    參考:Spark sql queries vs dataframe functions

    這裏是一個很好的星火RDDS之間的性能比較VS DataFrames閱讀reference VS SparkSQL

  3. 顯然我沒有爲它的答案,將其保留在你做了一些網研究,並找出解決辦法:)