Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/362.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 转移数据流模板作业失败_Java_Google Cloud Dataflow - Fatal编程技术网

Java 转移数据流模板作业失败

Java 转移数据流模板作业失败,java,google-cloud-dataflow,Java,Google Cloud Dataflow,根据《数据流指南》,我创建了这个简单的模板数据流作业示例: public class Runner { public static void main(final String[] args) { final PlaygroundPipelineOptions options = PipelineOptionsFactory.fromArgs(args).withValidation().as(PlaygroundPipelineOptions.class);

根据《数据流指南》,我创建了这个简单的模板数据流作业示例:

public class Runner {
  public static void main(final String[] args) {
    final PlaygroundPipelineOptions options =
        PipelineOptionsFactory.fromArgs(args).withValidation().as(PlaygroundPipelineOptions.class);

    options.setRunner(TemplatingDataflowPipelineRunner.class);
    options.setZone("***");
    options.setNetwork("***");
    options.setSubnetwork("***");
    options.setStagingLocation("***");
    options.setDataflowJobFile("***");

    final Pipeline pipeline = Pipeline.create(options);

    pipeline
        .apply(TextIO.Read.from(options.getInput()).named("TextIO.Read"))
        .apply(MapElements.via(new SimpleFunction<String, String>() {
          @Override
          public String apply(String input) {
            return input.toUpperCase();
          }
        }))
        .apply(TextIO.Write.to(options.getOutput()).named("TextIO.Write"));

    pipeline.run();
  }

  private interface PlaygroundPipelineOptions extends DataflowPipelineOptions {
    @Description("Input path")
    @Validation.Required
    ValueProvider<String> getInput();

    void setInput(ValueProvider<String> input);

    @Description("Output path")
    @Validation.Required
    ValueProvider<String> getOutput();

    void setOutput(ValueProvider<String> input);
  }
}

问题在于调用
ValueProvider#get()
时,如何正确地进行模板作业而不出现这些错误?

这似乎是源于。由于文件模式在验证期间不可用,解决方案可能会通过调用
withoutValidation()
来禁用
TextIO
源代码的验证。

这正是我作为临时解决方案所做的,但是通过阅读指南和关于模板化作业的内容,sdk应该适当地处理这一问题。一般的问题是ValueProvider#isAccessible()返回false,与ValueProvider#get()抛出异常相同。我相信这可能只是缺少文档。在创建管道模板时运行验证。由于在使用管道模板运行作业之前,filepattern的值不可用,因此在创建模板时无法访问并验证该值。因此出现了错误(应予以澄清)。
Exception in thread "main" java.lang.IllegalStateException: Cannot validate with a filepattern provided at runtime.