从Apache Beam中的ValueProvider中提取值

时间:2017-08-22 12:45:31

标签: google-cloud-dataflow apache-beam

我有一个我在Apache Beam程序中获得的运行时值。我需要访问该值,但Beam不允许我读取该值,除非我从ParDo之类的transfrom中读取它。

如果我尝试在任何转换之外访问该值,它会给我一个错误说: "不是从运行时上下文调用"。

如何阅读这些值?

P.S。我正在使用该程序的模板。

1 个答案:

答案 0 :(得分:1)

程序(例如模板)分两个阶段执行。在第一种方法中,评估主方法以产生管道结构。这代表模板。在第二阶段,执行该管道结构。

在评估期间(在像DoFn这样的用户定义函数之外)访问ValueProvider是不可能的,因为直到第二阶段才提供运行时值。

你能详细说明你想做什么吗?通常,解决方案是使ValueProvider可用于DoFn,然后让DoFn在运行时评估ValueProvider。