将额外输入传递给ParDo

时间:2018-03-22 06:23:24

标签: google-cloud-dataflow apache-beam apache-beam-io

我可以选择将其他输入传递给ParDo转换。在我的情况下,我需要将大约5000个字符串对象传递给我的ParDo。根据我的理解,这些是我的选择:

a)将其作为侧面输入传递:但我想,传递如巨大的侧面输入可能会降低我的管道性能

b)将它作为参数传递给我的ParDo类的构造函数,并将其作为类成员保存:有人可以告诉我,在内部,这与传递它作为侧面输入有何不同?

还有其他方法可以将额外的输入传递给ParDo吗?

2 个答案:

答案 0 :(得分:0)

使用侧面输入听起来像是问题的最佳解决方案。侧输入与直接包含DoFn中的数据不同,因为它们可以在运行时从外部数据源读取。数据流对管道大小的限制大约为10MB,因此如果数据大于此值,则无法将其直接包含在DoFn中。

答案 1 :(得分:0)

不清楚将它传递给构造函数与传递作为侧输入之间的区别。但是如果您将其作为侧面输入传递,请确保正确设置--workerCacheMb=<XXX>。在存储器中具有侧输入缓存输入使得元素获取更快。

有关详细信息,请参阅此文档:

https://cloud.google.com/dataflow/model/par-do#side-inputs