私は実際に様々な機能を組み合わせたSpark v.1.6.0のスカラアプリケーションを構築しました。特定のエントリのデータフレームをスキャンするためのコードがあり、データフレーム上で特定の計算を実行するコードがあり、出力を作成するコードがあります。パラレルパイプラインの作成方法は?
コンポーネントは「静的」に結合されています私のコードは、私は結果のデータを取り、入力としてデータを取るコンポーネントY
のメソッドを呼び出して、計算を行うコンポーネントX
からコードを呼び出します。
Iは、ユーザが単にパイプライン(並列実行と、おそらくいずれか)を指定有し、これはより柔軟取得したいと思い。私は、次の画像のように、ワークフローがかなり小さくてシンプルであることを前提となります
をしかし、私は最高のこの問題にアプローチする方法がわかりません。私は
- 私は、Apacheのスパークは、MLパッケージに
Pipeline
クラスが付属していることを見てきました、しかし、正しく理解していれば並列実行はサポートされていません(この例では2つのParquetReaderが同時にデータを読み込んで処理する可能性があります)。Luigi project明らかにこれを行う可能性があります。ルイージは長期的なワークフローのためのものですが、私はちょうど短期間のワークフローが必要ですが、ルイージは過度のものでしょうか?)あなたはスパークでの仕事/データフローを構築するためのことをお勧め何
?
それは確かにあなたのコードを最適化するための良い方法です。しかし、ここでは無料のランチはありません!スパークのパイプラインが超並列最適化されているとは思えません。ロジスティック回帰を推定する単純なクロス検証パイプラインでは、4つ以上のEC2スレーブで3つのCPU使用率が50%以下です。いいえ、いいえ!しかし、すべてがRAMにキャッシュされています。私は実際にそれを最適化する方法を模索しています。 – Boris