您好,登錄后才能下訂單哦!
本篇內容介紹了“Spark中的RDD核心操作有哪些”的有關知識,在實際案例的操作過程中,不少人都會遇到這樣的困境,接下來就讓小編帶領大家學習一下如何處理這些情況吧!希望大家仔細閱讀,能夠學有所成!
Q1:Spark中的RDD到底是什么?
RDD是Spark的核心抽象,可以把RDD看做“分布式函數編程語言”。
RDD有以下核心特征:
A list of partitions
A function for computing each split
A list of dependencies on other RDDs
Optionally, a Partitioner for key-value RDDs (e.g. to say that the RDD is hash-partitioned)
Optionally, a list of preferred locations to compute each split on (e.g. block locations for an HDFS file)
RDD中有兩種核心操作:Transformation和Action,Transformation時只會記錄對數據操作的元數據,Action時會對數據進行計算并產出結果。
Q2:Checkpoint和persist是什么類型的RDD呢?
RDD的Operation分為兩類,transformation和action,其中transformation產生新的RDD,action產生新的數據。作為DAG的lineage對transformation進行存儲,當action時執行lineage并產生數據。
checkpoint和persist是RDD比較特殊的兩個操作, persist持久化RDD, checkpoint持久化RDD同時切斷歷史lineage。
Persist和checkpoint有違immutability的操作,它們實際上修改RDD meta info中的storage level和lineage,并返回修改過的RDD對象自身而非新的RDD對象.
Q3:Spark在運行的時候Driver程序運行在什么地方?
在Standalone的模式下Driver運行在提交Spark Application的客戶端;
客戶端能夠提交Spark程序是應為安裝了Spark;
Driver要負責程序的運行;
Q4:理解DAGScheduler對DAG Stage劃分的訣竅是什么?
一般而言出現從外部讀取數據、進行Shuffle操作和寫數據的時候會成為Stage劃分的邊界;
Stage內部的操作是Pipeline的,可以極大的提高程序運行效率;
Shuffle是兩個Stage的劃分點;
Q5:如何理解Narrow Dependencies和Wide Dependencies?
Narrow Dependencies和Wide Dependencies構成了Spark Lineage;
Narrow Dependencies:例如map、filter、union、join with inputs co-partitioned;
Wide Dependencies:例如groupByKey、join with inputs not co-partitioned;
判斷是Narrow Dependencies的關鍵就是左側RDD Partition操作產出的結果是唯一右側的RDD Partition;
判斷是Wide Dependencies的關鍵就是左側RDD Partition操作產出的結果是至少兩個右側的RDD Partitions;
“Spark中的RDD核心操作有哪些”的內容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業相關的知識可以關注億速云網站,小編將為大家輸出更多高質量的實用文章!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。