2017-08-18 4 views
1

データの再計算にはどのように役立ちますか?Lineage In Sparkとは何ですか?

たとえば、私は30分ごとにデータを計算するいくつかのノードを持っています。 15分後に障害が発生した場合は、15分後に再び15分間を要することなく、系統を使用してデータを再計算することができますか?

+1

rddを作成して、その上で一連の変換を行います。 RDD上で 'toDebugString'を呼び出します。その特定のrddの系譜を見ることができます。 – philantrovert

答えて

7

系統について理解することはすべてRDDの定義にあります。

それでは、これを見てみましょう:

RDDSは、マシンのクラスタ間でメモリやディスクに保存することができ、データの要素の不変分布するコレクションです。データは、変換およびアクションを提供する低レベルのAPIと並行して操作できる、クラスター内の複数のマシンに分割されています。

に自動的に失われたデータを再構築するためにデータ系統情報を追跡するようRDDSはフォールトトレラントですので、理解するための2つのことが主にあり

残念ながら、これらのトピックは1つの回答で議論するにはかなり長いです。私は、あなたがこれらの記事を読むのに少し時間を取ることをお勧めします。Data Lineageについての記事です。 executorがあなたのデータを計算に失敗した場合には、ソースまたはキャッシュからそれはだかどうか、あなたの最後ののチェックポイントに戻ります、15分後に、

そして今は、あなたの質問や疑問に答えるために
をメモリおよび/またはディスクに保存します。

このように、あなたが言及した15分を保存することはありません!

1

変換(マップまたはフィルタなど)が呼び出されると、Sparkではすぐには実行されず、変換ごとにリネージが作成されます。リネージュは、そのRDDに適用されるすべての変換(データを読み込む場所を含む)を追跡します。

は例えば、アクションがRDDに呼び出されたときにのみ実行され、すぐに実行されません。次の例

val myRdd = sc.textFile("spam.txt") 
val filteredRdd = myRdd.filter(line => line.contains("wonder")) 
filteredRdd.count() 

sc.textFile()とmyRdd.filterを()を検討 - こちらfilteredRdd.count()。

アクションは、結果をある場所に保存するか、または表示するために使用されます。 RDD系統情報は、filteredRdd.toDebugString(filteredRddはここのRDD)コマンドを使用しても印刷できます。また、DAGビジュアライゼーションは、次のように非常に直感的な方法で完全なグラフを表示します。enter image description here

関連する問題