機器學習實踐:如何將Spark與Python結合?
Apache Spark是處理和使用大資料最廣泛的框架之一,Python是資料分析、機器學習等領域最廣泛使用的程式語言之一。如果想要獲得更棒的機器學習能力,為什麼不將Spark和Python一起使用呢?
在國外,Apache Spark開發人員的平均年薪為110,000美元。毫無疑問,Spark在這個行業中被廣泛使用。由於其豐富的庫集,Python也被大多數資料科學家和分析專家使用。二者整合也並沒有那麼困難,Spark用Scala語言開發,這種語言與Java非常相似。它將程式程式碼編譯為用於Spark大資料處理的JVM位元組碼。為了整合Spark和Python,Apache Spark社群釋出了PySpark。
Apache Spark是Apache Software Foundation開發的用於實時處理的開源叢集計算框架。Spark提供了一個介面,用於程式設計具有隱式資料並行和容錯功能的整個叢集。
下面是Apache Spark的一些特性,它比其他框架更具優勢:
·速度:比傳統的大型資料處理框架快100倍。
·強大的快取:簡單的程式設計層提供強大的快取和磁碟永續性功能。
·部署:可以透過Mesos、Yarn或Spark自己的叢集管理器進行部署。
·實時:記憶體計算,實時計算且低延遲。
·Polyglot:這是該框架最重要的特性之一,因為它可以在Scala,Java,Python和R中程式設計。
雖然Spark是在Scala中設計的,但它的速度比Python快10倍,但只有當使用的核心數量少時,Scala才會體現出速度優勢。由於現在大多數分析和處理都需要大量核心,因此Scala的效能優勢並不大。
對於程式設計師來說,由於其語法和標準庫豐富,Python相對來說更容易學習。而且,它是一種動態型別語言,這意味著RDD可以儲存多種型別的物件。
儘管Scala擁有SparkMLlib,但它沒有足夠的庫和工具來實現機器學習和NLP。此外,Scala 缺乏資料視覺化。
使用Python設定Spark(PySpark)
首先要下載Spark並安裝,一旦你解壓縮了spark檔案,安裝並將其新增到 .bashrc檔案路徑中,你需要輸入source .bashrc
要開啟PySpark shell,需要輸入命令./bin/pyspark
PySpark SparkContext和資料流
用Python來連線Spark,可以使用RD4s並透過庫Py4j來實現。PySpark Shell將Python API連結到Spark Core並初始化Spark Context。SparkContext是Spark應用程式的核心。
1.Spark Context設定內部服務並建立到Spark執行環境的連線。
2.驅動程式中的Spark Context物件協調所有分散式程式並允許進行資源分配。
3.叢集管理器執行程式,它們是具有邏輯的JVM程式。
4.Spark Context物件將應用程式傳送給執行者。
5.Spark Context在每個執行器中執行任務。
PySpark KDD用例
現在讓我們來看一個用例:資料來源為KDD'99 Cup(國際知識發現和資料探勘工具競賽,國內也有類似的競賽開放資料集,比如知乎)。這裡我們將取資料集的一部分,因為原始資料集太大。
建立RDD:
現在我們可以使用這個檔案來建立我們的RDD。
過濾
假設我們要計算我們在資料集中有多少正常的相互作用。,可以按如下過濾我們的raw_data RDD。
計數:
現在我們可以計算出新RDD中有多少元素。
輸出:
製圖:
在這種情況下,我們想要將資料檔案作為CSV格式檔案讀取。我們可以透過對RDD中的每個元素應用lambda函式。如下所示,這裡我們將使用map()和take()轉換。
輸出:
拆分:
現在,我們希望將RDD中的每個元素都用作鍵值對,其中鍵是標記(例如正常值),值是表示CSV格式檔案中行的整個元素列表。 我們可以按如下進行,這裡我們使用line.split()和map()。
輸出:
收集:
使用collect()動作,將RDD所有元素存入記憶體。因此,使用大型RDD時必須小心使用。
輸出:
當然,這比我們之前的任何操作花費的時間都要長。每個具有RDD片段的Spark工作節點都必須進行協調,以便檢索其各部分內容,然後將所有內容集合到一起。
作為結合前面所有內容的最後一個例子,我們希望收集所有常規互動作為鍵值對。
輸出:
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/31077337/viewspace-2156429/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 《Python機器學習實踐》簡介Python機器學習
- 從Spark MLlib到美圖機器學習框架實踐Spark機器學習框架
- 網路安全與機器學習(二):網路安全任務如何結合機器學習?機器學習
- 規則引擎與機器學習比較與結合機器學習
- 《美團機器學習實踐》—— 讀後總結機器學習
- 如何將深度學習與你正在做的事情相結合?深度學習
- 機器學習庫Spark MLlib簡介與教程機器學習Spark
- spark 與 yarn 結合SparkYarn
- ML-機器學習實踐機器學習
- 決策樹在機器學習的理論學習與實踐機器學習
- 機器學習(一):5分鐘理解機器學習並上手實踐機器學習
- UI設計培訓之如何將設計理論與實踐相結合UI
- python機器學習實戰(二)Python機器學習
- 機器學習基礎篇:支援向量機(SVM)理論與實踐機器學習
- 【Python機器學習實戰】決策樹與整合學習(三)——整合學習(1)Python機器學習
- 基於 KubeVela 的機器學習實踐機器學習
- 評書:《美團機器學習實踐》機器學習
- 【Python機器學習實戰】決策樹與整合學習(四)——整合學習(2)GBDTPython機器學習
- python-機器學習程式碼總結Python機器學習
- 19、如何使用機器學習結果機器學習
- [python學習]機器學習 -- 感知機Python機器學習
- 沒有Python基礎,如何學習用Python寫機器學習Python機器學習
- 美團機器學習實踐第二章-特徵工程總結機器學習特徵工程
- 《Python機器學習與視覺化分析實戰》簡介Python機器學習視覺化
- GO VS Python,哪個更適合機器學習?GoPython機器學習
- Python和R哪個更適合機器學習?Python機器學習
- 【機器學習】--Python機器學習庫之Numpy機器學習Python
- 機器學習落地遊戲實踐簡析機器學習遊戲
- Spark機器學習實戰 (十一) - 文字情感分類專案實戰Spark機器學習
- 如何學習機器學習機器學習
- 機器學習之支援向量機原理和sklearn實踐機器學習
- 如何實現實時機器學習? - huyenchip機器學習
- 谷歌機器學習43條規則:機器學習工程的最佳實踐經驗谷歌機器學習
- Spark Connector Reader 原理與實踐Spark
- 機器學習實驗出錯總結機器學習
- 如何學習Python?哪些人適合學Python?Python
- 【機器學習】帶你3分鐘看完《機器學習實戰》總結篇機器學習
- 1.Spark學習(Python版本):Spark安裝SparkPython