【发布时间】:2017-10-02 23:44:55
【问题描述】:
我有一个使用库版本 1.9.1 作业的 Google Dataflow 作业,该作业采用运行时参数。我们使用了 TextIO.read().from().withoutValidation()。由于我们迁移到 google dataflow 2.0.0 ,因此在 2.0.0 中删除了 withoutValidation。发行说明页面没有讨论这个https://cloud.google.com/dataflow/release-notes/release-notes-java-2。
我们尝试将输入作为 ValueProvider.RuntimeProvider 传递。但是在管道构建过程中,我们得到以下错误。如果将其作为 ValueProvider 传递,则管道创建将尝试验证值提供者。如何在 google cloud dataflow 2.0.0 中为 TextIO 输入提供运行时值提供程序?
java.lang.RuntimeException:方法 getInputFile 不应具有返回类型 RuntimeValueProvider,请改用 ValueProvider。 在 org.apache.beam.sdk.options.ProxyInvocationHandler.getDefault(ProxyInvocationHandler.java:505)
【问题讨论】:
-
RuntimeValueProvider 是一个极其底层的内部实现细节类,用户永远无法使用;它具有公共可见性这一事实是 Java 可见性系统的不幸事故。您所说的“管道创建正在尝试验证价值提供者”是什么意思?我认为这不应该发生。您能否包含您的代码和您遇到的错误的完整打印输出?
-
正如@jkff 所说,请发布您的代码。我假设您使用的是模板化管道?我正在使用带有参数的
2.1.0模板没有任何问题。