1
は、私が(重要なステップを強調するためにフォーマットされた)このようなスパークパイプラインを持っていると仮定します。火花のパイプラインを分割する?
val foos1 = spark_session.read(foo_file).flatMap(toFooRecord)
.map(someComplicatedProcessing)
.map(transform1)
.distinct().collect().toSet
私は似たパイプラインを追加している:
val foos2 = spark_session.read(foo_file).flatMap(toFooRecord)
.map(someComplicatedProcessing)
.map(transform2)
.distinct().collect().toSet
その後、私は両方の結果で何かをします。
私はsomeComplicatedProcessing
を2回実行しないようにしたいと思います(ファイルを解析するのは2度良いとは限りません)。
.map(someComplicatedProcessing)
ステップの後にストリームを取得し、2つの並列ストリームを作成する方法はありますか?
私は中間結果をディスクに保存できるので、より多くのI/Oを犠牲にしてCPU時間を節約することができます。より良い方法がありますか?どのような言葉でウェブ検索しますか?