假设我想生成100万亿条数据(随机数字以保持简单),我想使用Google Dataflow来实现这一目标。
我可以想到一种愚蠢的方式来做到这一点(我不是100%肯定这会起作用,但这是我开始尝试的地方):拿一个1000万行长的文本文件,并且每行在输入文本文件中有一个循环1000万次迭代的DoFn,每次迭代输出一个随机生成的数字,最终输出到文本文件。 (原始文本文件中的任何内容都将被忽略)。
但我不禁想到,使用Dataflow生成数据可能会有更好,更少hacky的方法。有关更好的方法的任何建议?
谢谢!
答案 0 :(得分: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(...));
因此它将使数据流并行地均匀生成大量数据。
答案 1 :(得分:1)
很简单,只需使用您自己的数字生成器https://cloud.google.com/dataflow/model/custom-io
扩展Source
课程