在Java或任何其他程序中,我们可以保存变量的状态并在以后根据需要引用变量值。 Apache Beam似乎无法做到这一点,有人可以确认吗?如果可以的话,请给我指出一些示例或文档。
我正在尝试解决以下需要使用我以前的转换输出的上下文的情况。
我是Apache Beam的新手,所以很难理解如何解决上述问题。
方法1:
PCollection config = p.apply(ReadDBConfigFn(options.getPath()));
PCollection<Record> records = config.apply(FetchRecordsFn());
PCollection<Users> users = config.apply(FetchUsersFn());
//现在使用“记录”和“用户”进行处理,如何使用Beam完成?
方法2:
PCollection config = p.apply(ReadDBConfigFn(options.getPath()));
PCollection<Record> records = config.apply(FetchRecordsFn()).apply(FetchUsersAndProcessRecordsFn());
//在'FetchUsersAndProcessRecordsFn'行上方需要'config',以便可以获取用户,但似乎没有办法?
答案 0 :(得分:0)
如果我理解正确,您是否想在处理步骤中使用两个集合records
和users
中的元素? Beam中有两种常用的模式可以完成此任务:
如果您希望加入这两个集合,则可能希望使用CoGroupByKey将相关记录和用户分组在一起进行处理。
如果其中一个集合(记录或用户)很小,并且在处理过程中整个集合都需要可用,则您可能希望将其作为side input的形式发送到处理步骤。
您的示例中的PCollection config
可能不清楚,因此我可能会误解了...这符合您的用例吗?