Spark SQL 程式開發需要注意的要點
阿新 • • 發佈:2019-01-26
Spark SQL 程式開發過程中,我們有兩種方式確定 schema,第一種是反射推斷 schema,這種方式下,需要定義樣本類 (case class) 來對應資料的列;第二種方式是通過程式設計方式來確定 schema,這種方式主要是通過 Spark SQL 提供的 StructType 和 StructField 等 API 來程式設計實現,這種方式下不需要定義樣本類
在程式實現中,我們需要使用以便隱式的把 RDD 轉化成 DataFrame 來操作。
通常來說,我們有兩種方式瞭解 Spark 程式的執行流程。第一種是通過在控制檯觀察輸出日誌,另一種則更直觀,就是通過 Spark Web Console 來觀察 Driver 程式裡各個部分產生的 job 資訊以及 job 裡包含的 stages 資訊。
需要指出的是,熟練的掌握 Spark SQL/DataFrame 的知識對學習最新的 Spark 機器學習庫 ML Pipeline 至關重要,因為 ML Pipeline 使用 DataFrame 作為資料集來支援多種的資料型別。
筆者在測試的過程中發現,處理相同的資料集和類似的操作,Spark SQL/DataFrame 比傳統的 RDD 轉換操作具有更好的效能。這是由於 SQL 模組的 Catalyst 對使用者 SQL 做了很好的查詢優化。
在程式實現中,我們需要使用以便隱式的把 RDD 轉化成 DataFrame 來操作。
通常來說,我們有兩種方式瞭解 Spark 程式的執行流程。第一種是通過在控制檯觀察輸出日誌,另一種則更直觀,就是通過 Spark Web Console 來觀察 Driver 程式裡各個部分產生的 job 資訊以及 job 裡包含的 stages 資訊。
需要指出的是,熟練的掌握 Spark SQL/DataFrame 的知識對學習最新的 Spark 機器學習庫 ML Pipeline 至關重要,因為 ML Pipeline 使用 DataFrame 作為資料集來支援多種的資料型別。
筆者在測試的過程中發現,處理相同的資料集和類似的操作,Spark SQL/DataFrame 比傳統的 RDD 轉換操作具有更好的效能。這是由於 SQL 模組的 Catalyst 對使用者 SQL 做了很好的查詢優化。