spark從入門到放棄三十二:Spark Sql(5)hive sql 簡述
阿新 • • 發佈:2019-02-05
1 簡述
Spark Sql 支援對Hive 中儲存的資料進行讀寫。操作Hive中的資料時,可以建立HiveContext,而不是SqlContext.HiveContext 繼承自SqlContext,但是增加了在Hive元資料庫中查詢表,以及用HiveQl 語法編寫sql功能,除了sql方法之外還提供了hql方法,從而使用hive語法來編譯sql。
使用HiveContext ,可以執行Hive的大部分功能,包括建立表,往表裡匯入資料以及用Sql 語句查詢表中的資料,查詢出來的結果是一個Row 陣列。
2 儲存資料
Spark Sql 還允許將資料儲存到Hive 表中,呼叫DataFrame 的 saveAsTable 命令,即可將DataSet 中的資料儲存到Hive 表中,於registerTempTable 不同saveAsTable 是會將DataFrame 中的資料物化到Hive 表中的,而且還會在Hive元資料庫中建立表的元資料。
預設情況下SaveAsTable 會將一張Hive Manager Table ,也就是說,資料的位置都是由元資料庫中的資訊控制的。當ManagerTable 被刪除時,表中的資料也會一併被刪除。
RegisterTempTable 只是註冊一個臨時的表,只要Application 停止或者重啟了,那麼表就沒有了。而saveAsTable 石建立物理化的表,無論Application 是否重啟或者停止都會一直存在。