我有一个我在Apache Beam程序中获得的运行时值。我需要访问该值,但Beam不允许我读取该值,除非我从ParDo之类的transfrom中读取它。
如果我尝试在任何转换之外访问该值,它会给我一个错误说: "不是从运行时上下文调用"。
如何阅读这些值?
P.S。我正在使用该程序的模板。
答案 0 :(得分:1)
程序(例如模板)分两个阶段执行。在第一种方法中,评估主方法以产生管道结构。这代表模板。在第二阶段,执行该管道结构。
在评估期间(在像DoFn这样的用户定义函数之外)访问ValueProvider是不可能的,因为直到第二阶段才提供运行时值。
你能详细说明你想做什么吗?通常,解决方案是使ValueProvider可用于DoFn,然后让DoFn在运行时评估ValueProvider。