spark shufferの紹介と操作
詳細
一.序文
简単なcopyの下で、记录して、翻訳は问题があって指摘してください.
Shuffle operations
Certain operations within Spark trigger an event known as the shuffle. The shuffle is Spark’s mechanism for re-distributing data so that it’s grouped differently across partitions. This typically involves copying data across executors and machines, making the shuffle a complex and costly operation.
操作
sparkがトリガーしたイベントには、
shuffle
,
shuffleはspark
パーティション間操作によってデータを新たに乱す方法.
通常は
executorsと
machines間でデータをコピーし、
shuffleは非常に高価な操作です.
Background
To understand what happens during the shuffle we can consider the example of the
operation. The
operation generates a new RDD where all values for a single key are combined into a tuple - the key and the result of executing a reduce function against all values associated with that key. The challenge is that not all values for a single key necessarily reside on the same partition, or even the same machine, but they must be co-located to compute the result.
理解するには
shuffleの過程で何が起こったのか、参考にしてみましょう.
を行ないます.
操作により新しいRDDが生成され、keyでtuple(類似:map)にマージされ、keyでreduce関数を実行すると実行結果が得られます.直面する課題は、すべてのkeyが同じパーティションに分布しているかどうか、同じマシンにも分布しているかどうかです.しかし、結果を得るには合併しなければなりません.
In Spark, data is generally not distributed across partitions to be in the necessary place for a specific operation. During computations, a single task will operate on a single partition - thus, to organize all the data for a single
reduce task to execute, Spark needs to perform an all-to-all operation. It must read from all partitions to find all the values for all keys, and then bring together values across partitions to compute the final result for each key - this is called the
shuffle
.
sparkでは、データは通常、パーティションにまたがらず、必要な場所で具体的な操作を実行します.計算中は、単一のタスクが単一のパーティションで動作するため、整理されたデータは1つになります.
reduceタスク実行.sparkはこれらのすべての操作を実行する必要があります.すべてのパーティションからすべてのkeysを見つけ、これらのデータを集約して各keyに基づいて集計し、最終的な結果を得る必要があります.これが
shuffle.
Although the set of elements in each partition of newly shuffled data will be deterministic, and so is the ordering of partitions themselves, the ordering of these elements is not. If one desires predictably ordered data following shuffle then it’s possible to use:
にもかかわらず
shuffled以降の各新しいパーティションの要素は
すべて決定されますが、これらの要素自体には順序がありません.ソート後の
shuffleデータ、使用可能:
mapPartitions:各パーティションはソートを使用する、例えば.sorted
repartitionAndSortWithinPartitions:新しいパーティションからソート
to make a globally ordered RDD:グローバルソートRDDを作成する
Operations which can cause a shuffle include
repartition
operations like
and
,
‘ByKey
operations (except for counting) like
and
, and
join
operations like
and
.
結果として
shuffle操作のパーティション操作は
and
「ByKey」の操作は次のとおりです.
and
と、
join
次のように操作します.
and
.
一.序文
简単なcopyの下で、记录して、翻訳は问题があって指摘してください.
Shuffle operations
Certain operations within Spark trigger an event known as the shuffle. The shuffle is Spark’s mechanism for re-distributing data so that it’s grouped differently across partitions. This typically involves copying data across executors and machines, making the shuffle a complex and costly operation.
操作
sparkがトリガーしたイベントには、
shuffle
,
shuffleはspark
パーティション間操作によってデータを新たに乱す方法.
通常は
executorsと
machines間でデータをコピーし、
shuffleは非常に高価な操作です.
Background
To understand what happens during the shuffle we can consider the example of the
reduceByKey
operation. The
reduceByKey
operation generates a new RDD where all values for a single key are combined into a tuple - the key and the result of executing a reduce function against all values associated with that key. The challenge is that not all values for a single key necessarily reside on the same partition, or even the same machine, but they must be co-located to compute the result.
理解するには
shuffleの過程で何が起こったのか、参考にしてみましょう.
reduceByKey
を行ないます.
reduceByKey
操作により新しいRDDが生成され、keyでtuple(類似:map)にマージされ、keyでreduce関数を実行すると実行結果が得られます.直面する課題は、すべてのkeyが同じパーティションに分布しているかどうか、同じマシンにも分布しているかどうかです.しかし、結果を得るには合併しなければなりません.
In Spark, data is generally not distributed across partitions to be in the necessary place for a specific operation. During computations, a single task will operate on a single partition - thus, to organize all the data for a single
reduceByKey
reduce task to execute, Spark needs to perform an all-to-all operation. It must read from all partitions to find all the values for all keys, and then bring together values across partitions to compute the final result for each key - this is called the
shuffle
.
sparkでは、データは通常、パーティションにまたがらず、必要な場所で具体的な操作を実行します.計算中は、単一のタスクが単一のパーティションで動作するため、整理されたデータは1つになります.
reduceByKey
reduceタスク実行.sparkはこれらのすべての操作を実行する必要があります.すべてのパーティションからすべてのkeysを見つけ、これらのデータを集約して各keyに基づいて集計し、最終的な結果を得る必要があります.これが
shuffle.
Although the set of elements in each partition of newly shuffled data will be deterministic, and so is the ordering of partitions themselves, the ordering of these elements is not. If one desires predictably ordered data following shuffle then it’s possible to use:
mapPartitions
to sort each partition using, for example, .sorted
repartitionAndSortWithinPartitions
to efficiently sort partitions while simultaneously repartitioning sortBy
to make a globally ordered RDD にもかかわらず
shuffled以降の各新しいパーティションの要素は
すべて決定されますが、これらの要素自体には順序がありません.ソート後の
shuffleデータ、使用可能:
mapPartitions:各パーティションはソートを使用する、例えば.sorted
repartitionAndSortWithinPartitions:新しいパーティションからソート
sortBy
to make a globally ordered RDD:グローバルソートRDDを作成する
Operations which can cause a shuffle include
repartition
operations like
repartition
and
coalesce
,
‘ByKey
operations (except for counting) like
groupByKey
and
reduceByKey
, and
join
operations like
cogroup
and
join
.
結果として
shuffle操作のパーティション操作は
repartition
and
coalesce
「ByKey」の操作は次のとおりです.
groupByKey
and
reduceByKey
と、
join
次のように操作します.
cogroup
and
join
.