Google cloud dataflow Apache Beam:升级到2.5.0后出现异常

Google cloud dataflow Apache Beam:升级到2.5.0后出现异常,google-cloud-dataflow,apache-beam,google-api-client,Google Cloud Dataflow,Apache Beam,Google Api Client,Java版本:8 运行程序:数据流 在升级到beam 2.5.0之前,一切正常。例外情况: Exception in thread "main" java.lang.RuntimeException: Failed to construct instance from factory method DataflowRunner#fromOptions(interface org.apache.beam.sdk.options.PipelineOptions) at org.apache.

Java版本:8 运行程序:数据流

在升级到beam 2.5.0之前,一切正常。例外情况:

Exception in thread "main" java.lang.RuntimeException: Failed to construct instance from factory method DataflowRunner#fromOptions(interface org.apache.beam.sdk.options.PipelineOptions)
    at org.apache.beam.sdk.util.InstanceBuilder.buildFromMethod(InstanceBuilder.java:233)
    at org.apache.beam.sdk.util.InstanceBuilder.build(InstanceBuilder.java:162)
    at org.apache.beam.sdk.PipelineRunner.fromOptions(PipelineRunner.java:55)
    at org.apache.beam.sdk.Pipeline.create(Pipeline.java:150)
    at com.geotab.bigdata.streaming.mapserver.backfill.MapServerBatchBeamApplication.main(MapServerBatchBeamApplication.java:115)
Caused by: java.lang.reflect.InvocationTargetException
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:498)
    at org.apache.beam.sdk.util.InstanceBuilder.buildFromMethod(InstanceBuilder.java:222)
    ... 4 more
Caused by: java.lang.NoSuchMethodError: com.google.api.client.googleapis.services.json.AbstractGoogleJsonClient$Builder.setBatchPath(Ljava/lang/String;)Lcom/google/api/client/googleapis/services/AbstractGoogleClient$Builder;
    at com.google.api.services.storage.Storage$Builder.setBatchPath(Storage.java:9307)
    at com.google.api.services.storage.Storage$Builder.<init>(Storage.java:9286)
    at org.apache.beam.sdk.util.Transport.newStorageClient(Transport.java:95)
    at org.apache.beam.sdk.util.GcsUtil$GcsUtilFactory.create(GcsUtil.java:96)
    at org.apache.beam.sdk.util.GcsUtil$GcsUtilFactory.create(GcsUtil.java:84)
    at org.apache.beam.sdk.options.ProxyInvocationHandler.returnDefaultHelper(ProxyInvocationHandler.java:592)
    at org.apache.beam.sdk.options.ProxyInvocationHandler.getDefault(ProxyInvocationHandler.java:533)
    at org.apache.beam.sdk.options.ProxyInvocationHandler.invoke(ProxyInvocationHandler.java:155)
    at com.sun.proxy.$Proxy25.getGcsUtil(Unknown Source)
    at org.apache.beam.sdk.extensions.gcp.storage.GcsPathValidator.verifyPathIsAccessible(GcsPathValidator.java:88)
    at org.apache.beam.sdk.extensions.gcp.storage.GcsPathValidator.validateOutputFilePrefixSupported(GcsPathValidator.java:61)
附带问题是:

  • 哪个google api客户端版本与beam 2.5兼容

  • 哪个com.google.guava:guava版本与beam和GoogleAPI客户端兼容


  • 错误表明AbstractGoogleClient.Builder丢失。查看GoogleAPIJava客户端版本的文档,这在1.19和1.20中都有,但从1.21以后就找不到了


    据介绍,更新到至少1.23可以解决这些问题。还请注意Nilson Pontello的评论:“在从1.22.0更改为1.23.0后,必须进行干净的构建,否则仍将使用旧的libs,特别是在使用maven生成war文件的情况下。”

    错误表明AbstractGoogleClient.Builder丢失。查看GoogleAPIJava客户端版本的文档,这在1.19和1.20中都有,但从1.21以后就找不到了


    据介绍,更新到至少1.23可以解决这些问题。请注意Nilson Pontello的这一评论:“在从1.22.0更改为1.23.0后,您必须创建一个干净的构建,否则旧的libs仍将被使用,特别是在您使用maven生成war文件的情况下。”

    Cloud Dataflow SDK 2.5.0 for Java具有以下编译功能:


    Cloud Dataflow SDK 2.5.0 for Java具有以下编译功能:

    我一直在使用api客户端1.23.0和beam 2.5,从未注意到意外的
    404未发现异常
    ,尽管这可能只是一个好运气。您可能希望向我们提供启动错误的代码部分,以防这不是由于依赖性问题,而是一个参数为/…的函数。。。have changedI一直在使用api客户端1.23.0和beam 2.5,从未注意到意外的
    404未发现异常
    ,尽管这可能只是一个好运气。您可能希望向我们提供启动错误的代码部分,以防这不是由于依赖性问题,而是一个参数为/…的函数。。。变了
    dependencies {
        compile 'org.apache.beam:beam-runners-direct-java:2.5.0'
        compile 'org.apache.beam:beam-runners-reference-parent:2.4.0'
        compile 'org.apache.beam:beam-runners-reference-java:2.5.0'
        compile ('org.apache.beam:beam-runners-google-cloud-dataflow-java:2.5.0') {
            exclude group: 'com.google.guava'
        }
    
        compile ('com.google.api-client:google-api-client:1.22.0') {
            force = true //version 1.23.0 causes HTTP response 404 not found exception in Beam 
           //Is this still the case?  Which version should I use with beam 2.5.0?
            exclude group: 'com.google.guava'
        }
        compile 'com.google.guava:guava:23.0'
        compile 'com.typesafe:config:1.3.2'
        compile 'org.apache.httpcomponents:httpclient:4.5.5'
    }
    
    +-----------------------+-------------------+----------+
    |        GroupId        |     ArtifactId    |  Version |
    +-----------------------+-------------------+----------+
    | com.google.api-client | google-api-client |   1.23.0 |
    | com.google.guava      | guava             |     20.0 |
    +-----------------------+-------------------+----------+