私は、データフローのpython apache_beamバージョンを使用しています。私はそれぞれ約400万エントリの配列を持つ約300のファイルを持っています。全体が約5Gbで、gsバケットに保管されています。dataflowのpython zip関数に相当するものは何ですか?
Iは、容易にファイルを読み取ることによってアレイ{x_1, ... x_n}
のPCollectionを生成することができ、私は今、実行する必要がある操作は、Pythonのzip関数のようである:私は各要素が0からN-1までPCollectionを、必要i
ファイル全体にあるx_i
の配列が含まれています。私はyield
をそれぞれの要素に対して(i, element)
を送信してからGroupByKeyを実行しようとしましたが、それは非常に遅くて非効率です(メモリの制約のためにローカルでは全く動作しません。私が望むなら、少なくともデータセットのすべてをロードすることができます)。
パイプラインをきれいに再構築するにはどうすればよいですか?
実際、あなたが取ったアプローチは正しいと思いますが、それは24時間より速く実行されるはずです。私が検査して何が間違っているかを見ることができる仕事IDがありますか? – jkff
私は現在176 * 208 * 176 * 278要素の完全なデータセットでそれを実行していますが、まだ2日のマシン時間後には実行されません。 これはそのジョブIDです@jkff 2016-10-28_08_36_06-9231369576702658658 – Enucatl
2時間前ではなく、2時間前にジョブが開始されたようですが、経過時間ではなく、すべてのワーカーに費やされた合計時間を指していますか?私は仕事を見て病理学的なものは見ません。データは既にキーでグループ化されていますが、あなたの仕事はグループ化されたデータを読み込んでいますが、遅い速度で処理しています。 GBKの結果に適用されるDoFn自体は遅いですか?インメモリランナーを使用して、はるかに小さなデータセットで実行し、コードをローカルで最適化できますか? – jkff