Google cloud dataflow 升级到Beam 2.4.0后DataFlow Runner失败

Google cloud dataflow 升级到Beam 2.4.0后DataFlow Runner失败,google-cloud-dataflow,Google Cloud Dataflow,我有一个用于测试的简单数据流作业,它在apache beam 2.1.0中成功运行,代码如下所示: publicstaticvoidmain(字符串[]args)引发异常{ DataflowPipelineOptions dataflowOptions=PipelineOptions工厂.as(DataflowPipelineOptions.class); dataflowOptions.setProject(“我的项目ID”); dataflowOptions.setStagingLocati

我有一个用于测试的简单数据流作业,它在apache beam 2.1.0中成功运行,代码如下所示:

publicstaticvoidmain(字符串[]args)引发异常{
DataflowPipelineOptions dataflowOptions=PipelineOptions工厂.as(DataflowPipelineOptions.class);
dataflowOptions.setProject(“我的项目ID”);
dataflowOptions.setStagingLocation(“gs://MY\u STAGING\u LOC”);
dataflowOptions.setTempLocation(“gs://MY\u TEMP\u LOC”);
setFilesToStage(Collections.singletonList(“MY_LOCAL_JAR_FILE.JAR”);
setRunner(DataflowRunner.class);
setNetwork(“SOME_NETWORK”);
dataflowOptions.setSubnetwork(“区域/部分区域/子网络/部分子网络”);
dataflowOptions.setZone(“SOME_ZONE”);
Pipeline p=Pipeline.create(数据流选项);
列表行=Arrays.asList(“foobar”);
p、 apply(创建(行)).setCoder(StringUtf8Coder.of());
p、 run().waitUntilFinish();
}
但是,当我迁移到ApacheBeam 2.4.0时,在尝试通过cli提交数据流作业时,立即出现以下错误

线程“main”java.lang.RuntimeException中的异常:转移包时出错 位于org.apache.beam.runners.dataflow.util.PackageUtil.stageClasspathElements(PackageUtil.java:396) 位于org.apache.beam.runners.dataflow.util.PackageUtil.stageClasspathElements(PackageUtil.java:273) 位于org.apache.beam.runners.dataflow.util.GcsStager.stageFiles(GcsStager.java:76) 位于org.apache.beam.runners.dataflow.util.GcsStager.stageDefaultFiles(GcsStager.java:64) 位于org.apache.beam.runners.dataflow.DataflowRunner.run(DataflowRunner.java:661) 位于org.apache.beam.runners.dataflow.DataflowRunner.run(DataflowRunner.java:174) 位于org.apache.beam.sdk.Pipeline.run(Pipeline.java:311) 位于org.apache.beam.sdk.Pipeline.run(Pipeline.java:297) 位于com.company.app.app.main(app.java:48) 原因:java.io.IOException:执行批处理GCS请求时出错 位于org.apache.beam.sdk.util.GcsUtil.ExecuteBaches(GcsUtil.java:607) 位于org.apache.beam.sdk.util.GcsUtil.getObjects(GcsUtil.java:339) 位于org.apache.beam.sdk.extensions.gcp.storage.GcsFileSystem.matchNonGlobs(GcsFileSystem.java:216) 位于org.apache.beam.sdk.extensions.gcp.storage.GcsFileSystem.match(GcsFileSystem.java:85) 位于org.apache.beam.sdk.io.FileSystems.match(FileSystems.java:123) 位于org.apache.beam.sdk.io.FileSystems.matchSingleFileSpec(FileSystems.java:188) 位于org.apache.beam.runners.dataflow.util.PackageUtil.alreadystage(PackageUtil.java:160) 同步访问org.apache.beam.runners.dataflow.util.PackageUtil.stagepackage(PackageUtil.java:184) 位于org.apache.beam.runners.dataflow.util.PackageUtil.lambda$stagePackage$1(PackageUtil.java:174) 位于org.apache.beam.sdk.util.MoreFutures.lambda$supplySync$0(MoreFutures.java:101) 位于java.util.concurrent.CompletableFuture$AsyncRun.run(CompletableFuture.java:1626) 位于java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) 位于java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) 运行(Thread.java:745) 原因:java.util.concurrent.ExecutionException:com.google.api.client.http.HttpResponseException:404未找到 ... 我没有更改任何配置设置


进一步调试代码时,对
POST请求失败https://www.googleapis.com/null

看起来这是一个bug,2月13日在dev分支中修复。希望修复程序很快就会发布:

原版:

有缺陷的修复:


修正补丁:

看起来这是一个2月13日在dev分支中修复的bug。希望修复程序很快就会发布:

原版:

有缺陷的修复:


更正的修复:

您遇到了此问题:

若要修复,请在使用Gradle时添加以下内容:

compile (group: 'com.google.api-client', name: 'google-api-client', version: '1.22.0') {
    force = true
}
或者Maven:

<dependency>
  <groupId>com.google.api-client</groupId>
  <artifactId>google-api-client</artifactId>
  <version>[1.22.0]</version>
</dependency>

com.google.api-client
谷歌api客户端
[1.22.0]

您遇到了这个问题:

若要修复,请在使用Gradle时添加以下内容:

compile (group: 'com.google.api-client', name: 'google-api-client', version: '1.22.0') {
    force = true
}
或者Maven:

<dependency>
  <groupId>com.google.api-client</groupId>
  <artifactId>google-api-client</artifactId>
  <version>[1.22.0]</version>
</dependency>

com.google.api-client
谷歌api客户端
[1.22.0]