使用Apache引發火花SQL:操縱結構化數據
Lakehouse讀取的數據探索為什麼lakehouses未來的數據架構和數據倉庫的父親,Bill Inmon。
建立一個統一的平台Beplay体育安卓版本大數據分析一直以來的Apache火花,允許一個程序執行ETL,MapReduce,複雜的分析。統一的一個重要方麵,我們的用戶一直要求是能夠更容易地導入數據存儲在外部資源,如Apache蜂巢。今天,我們興奮的宣布火花SQL最近,一個新的組件合並到火花存儲庫。
火花SQL將本機支持SQL火花和簡化查詢數據存儲在抽樣的過程(火花的分布式數據集)和外部來源。火花SQL方便抽樣和關係表之間的界限模糊了。統一這些強大的抽象使開發人員很容易將SQL命令查詢外部數據與複雜的分析,所有在一個單一的應用程序中。具體地說,火花SQL允許開發人員:
- 蜂巢從鋪進口關係數據文件和表
- 運行SQL查詢進口數據和現有的抽樣
- 很容易寫出抽樣蜂巢表或鑲花的文件
火花SQL在行動
現在,讓我們仔細看看如何引發SQL允許開發者將SQL命令集成到應用程序的權力也利用MLlib,引發的機器學習庫。考慮一個應用程序,這個應用程序需要預測哪些用戶可能的候選服務,基於他們的個人資料。通常,這樣的分析需要加入來自多個數據源的數據。出於演示的目的,假設應用程序有兩個表:
- 用戶(用戶id INT、名稱字符串,字符串,郵件
年齡INT,緯度:雙,經度:翻倍,
訂閱:布爾) - 事件(userId INT, INT)
鑒於這些數據存儲在表、一個希望構建一個模型,將預測哪些用戶是好為新賽季的目標,基於用戶是相似的。
/ /數據可以很容易地從現有資源中提取
/ /例如Apache蜂巢。
val trainingDataTable = sql (" " "
選擇e.action
u.age,
u.latitude,
u.logitude
從用戶u
加入事件e
在u。用戶id = e.userId " " ")
/ /自sql
返回一個抽樣,上述的結果
/ /查詢可以很容易地用於MLlib
val trainingData = trainingDataTable。地圖= >{行
val特性=數組(雙)(一行(1),(2)行,行(3))
LabeledPoint(行(0),功能)
}
val模型=
新的LogisticRegressionWithSGD () .run (trainingData)
現在,我們已經使用SQL加入現有的數據和訓練模型,我們可以使用這個模型來預測用戶可能的目標。
(他們都val = sql (" " "
選擇userId,
的年齡,
緯度,
logitude
從用戶
在訂閱= FALSE”“”)
/ / ML算法可以作為表的結果
/ /在隨後的SQL語句。
case類評分(用戶id: Int,得分:雙)
(他們都val分數=。地圖= >{行
val特性=數組(雙)(一行(1),(2)行,行(3))
評分(行(0),model.predict(特性))
}
scores.registerAsTable(“分數”)
val topCandidates = sql (" " "
選擇u.name u.email
從幾十年代
加入用戶u s。用戶id = u.userId
按分數DESC
限製100”“”)
/ /發送電子郵件熱門候選人促進服務。
在本例中,SQL火花容易提取和加入了各種數據準備的機器學習算法。因為火花SQL也存儲在抽樣的結果,與其他火花庫很簡單。此外,火花SQL允許開發人員關閉循環,使它容易操作和加入這些算法的輸出,生產所需的最終結果。
總結一下,統一火花平台給開發者能力選擇合適的工具做合適的工作,而Beplay体育安卓版本不需要兼顧多個係統。如果你想看到更多的具體的例子使用SQL請檢查出火花編程指南。
優化與催化劑
除了提供新的方法與數據交互,火花SQL還帶來了一個強大的新的優化框架稱為催化劑。使用催化劑,火花可以自動轉換的SQL查詢,以便更有效地執行。火花SQL背後的催化劑框架允許開發人員快速添加新的優化,使我們能夠建立一個更快的係統更快。在最近的一個例子中,我們發現了一個效率低下的Hive group by花了整個周末,一個有經驗的開發人員超過250行代碼來解決;那時,我們能夠做出相同的解決催化劑隻有幾行代碼。
未來的鯊魚
自然的問題是關於未來的鯊魚。鯊魚是最早係統交付100 x加速/蜂巢。它構建在Apache蜂巢代碼庫,通過交換來實現的性能改進的物理執行引擎蜂巢的一部分。雖然這種方法使鯊魚用戶加速他們的蜂巢查詢不需要修改現有的倉庫,鯊魚繼承了龐大而複雜的代碼庫從蜂巢很難優化和維護。隨著火花SQL的成熟,鯊魚會過渡到使用火花SQL查詢優化和物理執行,這樣用戶可以受益於持續優化工作在火花SQL。
簡而言之,我們將繼續投資於鯊魚和使它成為一個很好的替代Apache蜂巢。它將利用新的火花SQL組件,將提供功能補充,如蜂巢兼容性和獨立SharkServer,外部工具可以通過JDBC / ODBC連接查詢。
接下來是什麼
火花SQL將包含在火花1.0作為α組件。然而,這僅僅是開始更好地支持關係數據的火花,這篇文章隻觸及表麵的催化劑。尋找未來的博客文章在下列主題:
- 生成自定義字節碼加速表達式求值
- 讀寫數據使用其他格式和係統,包括Avro和HBase
- 在Python和Java API支持使用火花SQL