1

假设我想生成 100 万亿条数据(为了简单起见,使用随机数),我想使用 Google Dataflow 来完成。

我可以想到一个愚蠢的方法来做到这一点(我不是 100% 确定这会起作用,但这是我开始尝试的地方):获取一个 1000 万行长的文本文件,并且对于输入中的每一行文本文件有一个循环 1000 万次迭代的 DoFn,每次迭代输出一个随机生成的数字,最终都输出到一个文本文件。(原始文本文件中的任何内容都将被忽略)。

但我不禁想到,使用 Dataflow 生成数据可能有更好、更简单的方法。关于更好的方法来做到这一点的任何建议?

谢谢!

4

2 回答 2

1

对于小型数据集,您可以只使用 pipeline.apply(Create.of(...)) 来生成,但它不会扩展(生成代码将在本地执行)。

更好的方法可能是:

List<Integer> l = ...; // 100k integers inside
pipeline.apply(Create.of(l)).apply(ParDo.of(new Generate100MDoFn())).apply(TextIO.Write.to(...));

因此它将使数据流并行地均匀生成大量数据。

于 2015-03-05T00:33:58.673 回答
1

Source很简单,只需使用您自己的数字生成器扩展类: https ://cloud.google.com/dataflow/model/custom-io

于 2016-01-30T06:30:50.290 回答