将其他输入传递给 ParDo 转换的选项是什么。就我而言,我需要将大约 5000 个字符串对象传递给我的 ParDo。据我了解,这些是我的选择:
a) 将其作为侧输入传递:但我想,像巨大的侧输入这样的传递可能会降低我的管道的性能
b)将其作为参数传递给我的 ParDo 类的构造函数,并将其保留为类成员:有人可以告诉我,在内部,这与将其作为侧面输入传递有什么不同?
还有其他方法可以将额外的输入传递给 ParDo 吗?
将其他输入传递给 ParDo 转换的选项是什么。就我而言,我需要将大约 5000 个字符串对象传递给我的 ParDo。据我了解,这些是我的选择:
a) 将其作为侧输入传递:但我想,像巨大的侧输入这样的传递可能会降低我的管道的性能
b)将其作为参数传递给我的 ParDo 类的构造函数,并将其保留为类成员:有人可以告诉我,在内部,这与将其作为侧面输入传递有什么不同?
还有其他方法可以将额外的输入传递给 ParDo 吗?
不清楚将其传递给构造函数与作为侧面输入传递之间的区别。但是,如果您将其作为侧面输入传递,请确保您进行了--workerCacheMb=<XXX>
适当的设置。将侧面输入缓存在内存中可以更快地获取元素。
有关更多详细信息,请参阅此文档:
使用侧面输入听起来像是解决问题的最佳方法。侧输入与直接在 DoFn 中包含数据不同,因为它们可以在运行时从外部数据源中读取。Dataflow 对管道大小的限制大约为 10MB,因此如果数据大于该数据,您将无法将其直接包含在 DoFn 中。