【问题标题】:Unable to run PubSubSource on Flink cluster无法在 Flink 集群上运行 PubSubSource
【发布时间】:2021-10-10 01:41:37
【问题描述】:

我编写了一个最小的 Flink 应用程序,试图从 PubSub 读取数据。

val env = StreamExecutionEnvironment.getExecutionEnvironment
env.enableCheckpointing(10000L)
env.addSource(
  PubSubSource.newBuilder()
    .withDeserializationSchema(new SimpleStringSchema)
    .withProjectName("PROJECT")
    .withSubscriptionName("SUBSCRIPTION")
    .build())
  .print()
env.execute("job")

这个程序可以直接运行(sbt run)成功,但是如果我将它提交到Flink集群,我得到了以下错误信息。

java.lang.IllegalArgumentException: cannot find a NameResolver for pubsub.googleapis.com:443

我尝试在不同的机器/环境中运行集群,但它们都不起作用。

  • 操作系统:macOS Catalina / Ubuntu 18.04
  • Flink 版本:1.13.1 / 1.12.2
  • Scala 版本:2.12.13 / 2.11.12
  • JVM:Oracle 8&11、OpenJDK 8&11

这是代码的gistbuild.sbt 和完整的错误消息。

谢谢。

【问题讨论】:

    标签: apache-flink grpc google-cloud-pubsub


    【解决方案1】:

    找到了解决办法。

    就像this post 所说,我需要将这些文件保存在META-INF/services 中。

    删除以下行后,一切正常。

    case PathList("META-INF", xs @ _*) => MergeStrategy.discard
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-03-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多