PySpark常見類庫及名詞解釋
哈嘍大家好,我是了不起。
PySpark是一個非常復雜的系統,我們初次接觸就會感覺有很多的名詞或者簡稱,今天就帶大家看一下常見的類庫和名詞的解釋,也是方便大家統一收藏,方便后續查找,先了解單一名詞的解釋,有利于快速的理解整個PySpark的運行機制。
PySpark核心類
- pyspark.SparkContext: Spark 庫的主要入口點,它表示與Spark集群的一個連接,其他重要的對象都要依賴它.SparkContext存在于Driver中,是Spark功能的主要入口。代表著與Spark集群的連接,可以在集群上創建RDD,accumulators和廣播變量
- pyspark.RDD: 是Spark的主要數據抽象概念,是Spark庫中定義的一個抽象類。
- pyspark.streaming.StreamingContext 一個定義在Spark Streaming庫中定義的類, 每一個Spark Streaming 應用都必須創建這個類
- pyspark.streaming.DStrem:離散數據流,是Spark Streaming處理數據流的主要對象
- pyspark.sql.SparkSession: 是DataFrame和SQL函數的主要入口點。
- pyspark.sql.DataFrame: 是Spark SQL的主要抽象對象,若干行的分布式數據,每一行都要若干個有名字的列。跟R/Python中的DataFrame 相像,有著更豐富的優化。DataFrame可以有很多種方式進行構造,例如:結構化數據文件,Hive的table, 外部數據庫,RDD。
- pyspark.sql.Column DataFrame 的列表達.
- pyspark.sql.Row DataFrame的行數據
Spark的基本概念
Application由多個Job組成,Job由多個Stage組成,Stage由多個Task組成。Stage是作業調度的基本單位。
- RDD:是彈性分布式數據集(Resilient Distributed Dataset)的簡稱,是分布式內存的一個抽象概念,提供了一種高度受限的共享內存模型。
- DAG:是Directed Acyclic Graph(有向無環圖)的簡稱,反映RDD之間的依賴關系。
- Driver Program:控制程序,負責為Application構建DAG圖。
- Cluster Manager:集群資源管理中心,負責分配計算資源。
- Worker Node:工作節點,負責完成具體計算。
- Executor:是運行在工作節點(Worker Node)上的一個進程,負責運行Task,并為應用程序存儲數據。
- Application:用戶編寫的Spark應用程序,一個Application包含多個Job。
- Job:作業,一個Job包含多個RDD及作用于相應RDD上的各種操作。
- Stage:階段,是作業的基本調度單位,一個作業會分為多組任務,每組任務被稱為“階段”。
- Task:任務,運行在Executor上的工作單元,是Executor中的一個線程。
RDD操作的兩種類型
RDD的操作有兩種類型,即Transformation操作和Action操作。轉換操作是從已經存在的RDD創建一個新的RDD,而行動操作是在RDD上進行計算后返回結果到 Driver。
(1) Transformation操作:
用于對RDD的創建,還包括大量的操作方法,如map、filter、groupBy、join等,RDD利用這些操作生成新的RDD。
transformation都具有 Lazy 特性,即 Spark 不會立刻進行實際的計算,只會記錄執行的軌跡,只有觸發Action操作的時候,它才會根據 DAG 圖真正執行。
(2) action操作:
數據執行部分,通過執行count、reduce、collect等真正執行數據的計算。RDD的lazy模式,使得大部分前期工作都在transformation時已經完成。
PySpark - MLlib
Apache Spark提供了一個名為MLlib的機器學習API。PySpark也在Python中使用這個機器學習API。它支持不同類型的算法。
- mllib.classification - spark.mllib包支持二進制分類,多類分類和回歸分析的各種方法。分類中一些最流行的算法是Random Forest, Naive Bayes, Decision Tree等。
- mllib.clustering - 聚類是一種無監督的學習問題,您可以根據某些相似概念將實體的子集彼此分組。
- mllib.fpm - 頻繁模式匹配是挖掘頻繁項,項集,子序列或其他子結構,這些通常是分析大規模數據集的第一步。多年來,這一直是數據挖掘領域的一個活躍的研究課題。
- mllib.linalg - 線性代數的MLlib實用程序。
- mllib.recommendation - 協同過濾通常用于推薦系統。這些技術旨在填寫用戶項關聯矩陣的缺失條目。
- spark.mllib - 它目前支持基于模型的協同過濾,其中用戶和產品由一小組可用于預測缺失條目的潛在因素描述。spark.mllib使用交替最小二乘(ALS)算法來學習這些潛在因素。
- mllib.regression - 線性回歸屬于回歸算法族。回歸的目標是找到變量之間的關系和依賴關系。使用線性回歸模型和模型摘要的界面類似于邏輯回歸案例。
總結
今天給大家帶來的是PySpark常見類庫和名詞解釋,了解這些最基礎的名詞以后,我們看大段的相關資料就不會犯難了。