【发布时间】:2019-06-12 18:25:58
【问题描述】:
我有 200 万个数据文件要处理。 以下代码需要 2 小时才能完成。
out_file = "./output.tsv"
result = "./input.tsv"
|> File.stream!
|> CSV.decode(separator: ?\t, headers: headers)
|> Enum.map(&(elem(&1, 1)))
|> Enum.group_by(&{&1.id, &1.name})
|> Enum.map(&(format_data(&1)))
File.write(out_file, result)
为了获得高性能,我采用了Flow,然后我编写了以下代码。
好像是Enum,所以干脆加了Flow.from_enumerable,然后把Enum改写成Flow。
out_file = "./output.tsv"
result = "./input.tsv"
|> File.stream!
|> CSV.decode(separator: ?\t, headers: headers)
|> Flow.from_enumerable(stages: 4)
|> Flow.map(&(elem(&1, 1)))
|> Flow.group_by(&{&1.id, &1.name})
|> Flow.map(&(format_data(&1)))
File.write(out_file, result)
它不起作用。我不认为像这样使用Flow 的正确方法。
请让我知道您对正确使用Flow 的建议。
【问题讨论】:
标签: elixir