スパーク-DAG図。
DAG(有向非巡回グラフ)と呼ばれる有向非巡回グラフ、RDD DAG間の依存関係に応じて、DAGの間のRDDの依存関係が形成されるRDDへの変換元の系列は、DAG形成されます別のステージに分け。
幅依存性
狭い依存性:親と子RDD RDDパーティション間の関係は一から一です。あるいは、親パーティションは、サブパーティションが多数対RDDである場合にのみ、RDDとRDD親子関係RDDパーティションに対応しています。何シャッフル生成はありません。RDD親のパーティションは、に行くサブRDDのパーティション。
幅依存関係:親と子RDD RDDパーティション対多の関係。世代がシャッフルされます。親データパーティションRDDは、サブRDD内部の異なるパーティションにアクセスしてください。
ステージ
RDD間の依存関係のスパークタスクは、DAG、DAGはDAGSchedulerに提出された有向非循環グラフを形成し、DAGScheduler DAGが複数の相互依存段階に分割され、ステージ分割では、RDDの間の幅に依存します。
分割ステージに広い信頼に遭遇し、各ステージは、1つまたは複数のタスクのタスクを含みます。次いで、これらは、タスクセットの形でタスクTaskSchedulerの実行に提出されます。ステージは並列タスクのセットで構成されています。
ステージ切断ルール
ルール切削:背面から、顔の幅は、切削ステージに依存します。
舞台类别:ResultStage(減らす)、ShuffleMapStage(マップ)
シャッフル
シャッフルは、タスクは、このプロセスに入っ減らすためにマップタスクから出力されたデータを記述する。地図の間のブリッジとしてシャッフルして削減し、地図にはこのリンクを利用するには、出力を下げシャッフルしなければならない、シャッフルのパフォーマンスは、直接、プログラム全体のパフォーマンスとスループットに影響します。分散型の場合には、ノード間でタスクを軽減するので、他のノードにマップタスクの結果を引っ張っする必要があります。このプロセスは、ネットワークリソースの消費量やメモリ、ディスクIOの消費量が生成されます。シャッフルは、通常2つの部分に分かれ:地図データの準備段階とステージは、プロセスデータコピーを削減します。
プロデュースシャッフル演算子:
1.重複排除
DEF異なる()
DEF異なる(numPartitions:INT)
2.重合
DEF reduceByKey(FUNC:(V、V)=> V、numPartitions:INT):RDD [(K、V)]
reduceByKey DEF(パーティショナ:パーティション分割、FUNC:(V、V)=> V):RDD [(K 、V)]
DEF GROUPBY [K](F:T => K、P:パーティショナ):RDD [(K、反復処理可能[V])]
DEF groupByKey(パーティ:パーティション分割):RDD [(K、反復処理可能[V] )]
DEF aggregateByKey [U:ClassTag(zeroValue:U、パーティショナ:パーティショナ):RDD [(K、U)]
ClassTag(zeroValue:U、numPartitions:INT):RDD [(K、U aggregateByKey [U DEF )]
DEF combineByKey [C](createCombiner:V => C、mergeValue:(C、V)=> C、mergeCombiners:(C、C)=> RDD [(K、C)]:C) combineByKey DEF [C (createCombiner:V => C、mergeValue:(C、V)=> C、mergeCombiners:(C、C)=> C、numPartitions:INT):RDD [(K、C)] DEF combineByKey [C](createCombiner:V => C、mergeValue:(C、V)=> C、mergeCombiners:(C、C)=> C、パーティショナ:パーティション分割、mapSideCombine:ブール= 真、シリアライザ:シリアライザ= NULL ):RDD [(K、C)]
3.ソート
DEF sortByKey(昇順:ブール= 真、numPartitionsます。int = self.partitions.length):RDD [(K、V)]
SORTBY [K](F DEF:(T)=> K、昇順:ブール= 真、numPartitions :のInt = this.partitions.length)(暗黙ORD:注文[K]、CTAG:ClassTag [K]):RDD [T]
4.再パーティション化
DEF合体(numPartitions:INT、シャッフル:ブール= 偽、partitionCoalescer:オプション[PartitionCoalescer] = Option.empty)
デフ配分(numPartitions:INT)(暗黙ORD:注文[T] = NULL)
操作セットまたはテーブル
DEF INTERSECTION(その他:EET [T]):EET [T]
DEF INTERSECTION(その他:EET [T]、パーティショナ:パーティショナ)(暗黙ORD:注文[T] = NULL ):EET [T]
DEF INTERSECTION(その他: EET [T]、numPartitions:INT):EET [T]が
DEF減算(その他:EET [T]、numPartitions:INT):EET [T]が
DEF減算(その他:EET [T]、P:パーティショナ)(暗黙ORD :[T] =注文ヌル):EET [T] subtractByKey DEF [W:ClassTag](その他:EETの[(K、W)]):EETの[(K、V)] subtractByKey DEF [W:ClassTag](他の:EETの[(K、W)]、numPartitions:INT):EETの[(K、V)] subtractByKey [W:ClassTag] DEF(他:EETの[(K、W)]、P:パーティショナ):EETの[( Kは、V)] DEF参加[W](その他:EETの[(K、W)]、パーティショナ:パーティ):EETの[(K、(V、W))] RDD [(K、(V、W))]:DEF [W](:RDD [(K、W)他)に参加 RDD [(K、W)]、numPartitions:のInt DEF [W](他の参加):RDD [(K、(V、W))] DEF leftOuterJoin [W](その他:RDD [(K、W)]):RDD [(K、(V、オプション[W]))]