2016-10-27 20 views
1

私は、データフローの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を実行しようとしましたが、それは非常に遅くて非効率です(メモリの制約のためにローカルでは全く動作しません。私が望むなら、少なくともデータセットのすべてをロードすることができます)。

パイプラインをきれいに再構築するにはどうすればよいですか?

+0

実際、あなたが取ったアプローチは正しいと思いますが、それは24時間より速く実行されるはずです。私が検査して何が間違っているかを見ることができる仕事IDがありますか? – jkff

+0

私は現在176 * 208 * 176 * 278要素の完全なデータセットでそれを実行していますが、まだ2日のマシン時間後には実行されません。 これはそのジョブIDです@jkff 2016-10-28_08_36_06-9231369576702658658 – Enucatl

+0

2時間前ではなく、2時間前にジョブが開始されたようですが、経過時間ではなく、すべてのワーカーに費やされた合計時間を指していますか?私は仕事を見て病理学的なものは見ません。データは既にキーでグループ化されていますが、あなたの仕事はグループ化されたデータを読み込んでいますが、遅い速度で処理しています。 GBKの結果に適用されるDoFn自体は遅いですか?インメモリランナーを使用して、はるかに小さなデータセットで実行し、コードをローカルで最適化できますか? – jkff

答えて

0

上記のコメントでjkffが指摘したように、コードは確かに正しいので、テンソルフローアルゴリズムをプログラミングするには、手順が推奨されます。各要素に適用されたDoFnはボトルネックでした。

関連する問題