200万件データを処理する下記のプログラムがあります。動作済み。
elixir
1 out_file = "./output.tsv" 2 result = "./input.tsv" 3 |> File.stream! 4 |> CSV.decode(separator: ?\t, headers: headers) 5 |> Enum.map(&(elem(&1, 1))) 6 |> Enum.group_by(&{&1.id, &1.name}) 7 |> Enum.map(&(format_data(&1))) 8 File.write(out_file, result)
高速化するために、Flow
を利用しようと思って下記のように書き直しました。
Enum
に似たような関数がそろっていたので、純粋に Flow.from_enumerable
を追記して、Enum
を Flow
に書き換えだけです。
elixir
1 out_file = "./output.tsv" 2 result = "./input.tsv" 3 |> File.stream! 4 |> CSV.decode(separator: ?\t, headers: headers) 5 |> Flow.from_enumerable(stages: 4) 6 |> Flow.map(&(elem(&1, 1))) 7 |> Flow.group_by(&{&1.id, &1.name}) 8 |> Flow.map(&(format_data(&1))) 9 File.write(out_file, result)
全く動作しないのですが、そもそもFlow
の利用方法が異なると思いますが、アドバイスをお願い致します。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。