2017-10-06 5 views
0

変換とアクションの間でtextFileが変更されたときにどうなるかを知りたいだけです。 例えば、私は1MBのtextFileからRDDを作成し、flatMap変換を行いますが、 アクション.collectを呼び出す前に、ローカルファイルシステムのファイルを同じ名前の100MBのtextFileに置き換えます。オペレータグラフの生成

アクションコールの後に演算子グラフが生成されるため、大きなファイルからDAGを計算しないでください。データが実際に必要になるまで、私はそれをやってみたら

// RDD created from 1 MB File size 
val a = sc.textFile("c:/SampleData.txt").flatMap(x => x.split(" ")) 

// Replace the textfile SampleData.txt(1 MB size) with SampleData (100 MB size) 
a.collect 

は、しかし、私は

Caused by: java.io.EOFException: Cannot seek after EOF 

答えて

0

は、一般的にスパークもRDD入力の有無を検証しません。この例外が発生しました(例外もあります)。 Sparkは、アクションが呼び出されたときに新しいファイルを使用して分割を計算します。

0

Sparkは、アクションの実行中に利用可能なファイルを使用します。 Sparkは、遅延メカニズムを使用します。私たちはRDD上で変換を行っていますが、Sparkはすべて操作用のDAGを作成しています。 RDDを含む何らかのアクションを呼び出すとすぐに実行全体が開始されます。したがって、この場合、使用可能な最新のファイルが使用されます。

希望すると便利です。