Spark 與 Python 簡介 – PySpark 初學者
在處理和使用大數據方面,?Apache Spark是使用最廣泛的框架之一,而Python是用于數據分析、機器學習等的最廣泛使用的編程語言之一。那么,為什么不一起使用它們呢?這就是Spark with Python也稱為PySpark出現的地方。
Apache Spark 簡介
Apache Spark 是由 Apache 軟件基金會開發的用于實時處理的開源集群計算框架。Spark 提供了一個接口,用于對具有隱式數據并行性和容錯性的整個集群進行編程。
以下是 Apache Spark 的一些特性,這些特性使其比其他框架更具優勢:
速度:比傳統的大規模數據處理框架快 100 倍。
強大的緩存:簡單的編程層提供了強大的緩存和磁盤持久化能力。
部署:?可以通過 Mesos、Hadoop 通過 Yarn 或 Spark 自己的集群管理器進行部署。
實時:?由于內存計算,實時計算和低延遲。
Polyglot:這是該框架最重要的特性之一,因為它可以用 Scala、Java、Python 和 R 進行編程。
為什么選擇 Python?
雖然 Spark 是用 Scala 設計的,這使它比 Python 快了近 10 倍,但 Scala 只有在使用的內核數量較少時才能更快。由于現在大部分的分析和處理都需要大量的內核,所以Scala的性能優勢并沒有那么大。
對于程序員來說,Python相對容易?學習,因為它的語法和標準庫。此外,它是一種動態類型語言,這意味著 RDD 可以保存多種類型的對象。
盡管 Scala 有SparkMLlib,但它沒有足夠的庫和工具用于機器學習和 NLP目的。此外,Scala 缺乏數據可視化。
使用 Python (PySpark) 設置 Spark
我希望你們知道如何下載火花并安裝它。所以,一旦你解壓了 spark 文件,安裝了它并將它的路徑添加到.bashrc文件中,你需要輸入source .bashrc
export SPARK_HOME = /usr/lib/hadoop/spark-2.1.0-bin-hadoop2.7 export PATH = $PATH:/usr/lib/hadoop/spark-2.1.0-bin-hadoop2.7/bin
要打開 pyspark shell,您需要輸入命令??./bin/pyspark
Spark in Industry
Apache Spark 由于其驚人的功能,如內存處理、多語言和快速處理,正被全球許多公司用于各種行業的各種目的:
雅虎使用 Apache Spark 的機器學習功能來個性化其新聞、網頁以及目標廣告。他們使用 Spark 和 python 來找出什么樣的新聞——用戶有興趣閱讀和分類新聞故事,以找出什么樣的用戶有興趣閱讀每一類新聞。
TripAdvisor使用 apache spark 通過比較數百個網站來為客戶找到最優惠的酒店價格,從而為數百萬旅客提供建議。以可讀格式閱讀和處理酒店評論所需的時間是在 Apache Spark 的幫助下完成的。
作為全球最大的電子商務平臺之一,阿里巴巴?運行著一些世界上最大的 Apache Spark 作業,以分析其電子商務平臺上數百 PB 的數據。
PySpark SparkContext 和數據流
用 Python 談論 Spark,使用 RDD 是由庫 Py4j 實現的。PySpark Shell 將 Python API 鏈接到 Spark 核心并初始化 Spark 上下文。Spark Context是任何Spark?應用程序的核心。
Spark 上下文設置內部服務并建立與 Spark 執行環境的連接。
驅動程序中的 sparkcontext 對象協調所有分布式進程并允許資源分配。
Cluster Managers 提供Executors,它是帶有邏輯的JVM 進程。
SparkContext 對象將應用程序發送給執行程序。
SparkContext 在每個執行器中執行任務。
PySpark KDD 用例
現在讓我們來看看KDD'99 Cup(國際知識發現和數據挖掘工具大賽)的一個用例。這里我們取一小部分數據集,因為原始數據集太大了