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