当前位置: 首页 > 知识库问答 >
问题:

Apache Beam:PubsubReader在NPE时失败

斜和硕
2023-03-14
java.lang.NullPointerException
at org.apache.beam.sdk.io.PubsubUnboundedSource$PubsubReader.ackBatch(PubsubUnboundedSource.java:640)
at org.apache.beam.sdk.io.PubsubUnboundedSource$PubsubCheckpoint.finalizeCheckpoint(PubsubUnboundedSource.java:313)
at org.apache.beam.runners.direct.UnboundedReadEvaluatorFactory$UnboundedReadEvaluator.getReader(UnboundedReadEvaluatorFactory.java:174)
at org.apache.beam.runners.direct.UnboundedReadEvaluatorFactory$UnboundedReadEvaluator.processElement(UnboundedReadEvaluatorFactory.java:127)
at org.apache.beam.runners.direct.TransformExecutor.processElements(TransformExecutor.java:139)
at org.apache.beam.runners.direct.TransformExecutor.run(TransformExecutor.java:107)
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
at java.util.concurrent.FutureTask.run(FutureTask.java:266)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
at java.lang.Thread.run(Thread.java:745)

共有1个答案

呼延高超
2023-03-14

此问题的存在是因为DirectRunner中有一个Bug(BEAM-1656)和PubSubcheckpoint中有一个前置条件。DirectRunner中的bug在pull request 2237中得到了修复,该bug被合并到Github主分支中,但在0.6.0版本之后。

在使用DirectRunner时,更新到0.7.0或从github HEAD构建可以解决这个问题。

要更新到当前的夜间构建,您必须将以下存储库添加到项目的pom.xml中。包含此修复的beam-runners-direct-java模块的最早版本是0.7.0-20170316.070901-9,但并非所有模块都是用此特定版本构建的,因此您可能必须指定单独兼容的版本或使用0.7.0-snapshot

    <repositories>
      <repository>
        <id>apache.snapshots</id>
        <name>Apache Development Snapshot Repository</name>

 <url>https://repository.apache.org/content/repositories/snapshots/</url>
        <releases>
          <enabled>false</enabled>
        </releases>
        <snapshots>
          <enabled>true</enabled>
        </snapshots>
      </repository>

    </repositories>
 类似资料:
  • 由于以下异常,此代码失败 这是异常的完整stacktrace。我刚刚从一个Solr独立安装“升级”到一个SolrCloud(使用一个外部Zookeeper实例,而不是嵌入式实例)。在独立的Solr中,相同的代码(只是有一些小的区别,比如主机URL)可以很好地工作。 NPE让我进入SolrJ库,我不知道。

  • 入门(没有Maven)我首先在eclipse中安装了GEF和Drools 6.0.0最终插件。然后我创建了一个Drools项目,它生成了下面的两个文件。 口水est.java Sample.drl 我在K会话中获得NPE。插入(消息) 显然是因为此处缺少ksession规则 当我mavenize这个项目并将其作为maven测试运行时,我得到了同样的事情。我注意到一些人已经经历过这种情况,并指出了类

  • 堆栈跟踪: java.lang.NullPointerException 在locusttask.salescrm.execute处(salescrm.java:76) 在java.util.concurrent.ThreadPoolExecutor$worker.run(ThreadPoolExecutor.java:624) 在java.lang.Thread.Run(thread.java:

  • 我正在研究如何使用Mockito和Junit,现在测试一些片段。我不明白为什么我在Mock注释后在下面的代码中有NPE: 但是代码的第一部分工作得很好,尽管据我所知,这两个部分都是这样做的。 编辑:堆栈跟踪: null

  • 我正在开发一个Eclipse插件,它应该重写一些.c源文件。我正在使用Eclipse CDT AST解析器,但在尝试保存对AST的调整时,我面临一个NPE。我从活动工作区的项目中获取要解析的(_file)。当执行下面的代码时,我面对的是下面的NPE。在以下位置抛出NPE: 我进一步研究了CDT源代码,在我的例子中,似乎没有初始化。如果调用,则返回。我认为这就造成了上面提到的例外。我需要以任何方式引

  • 我有一个主要活动与ActionBar。在运行时,尽管actionbar对象被初始化为getActionBar(),但我接收到具有以下logcat输出的NPE 主要活动: logcat: