【问题标题】:Apache Beam PubSub Reader ExceptionsApache Beam PubSub 阅读器异常
【发布时间】:2017-04-02 18:25:49
【问题描述】:

我正在使用 PubSub 源运行管道,但我遇到了一些奇怪的异常,因为我的管道崩溃了。我可以很好地处理一些元素(3-10),然后突然抛出以下两条错误消息之一。两者都不给我一个线索,我可能做错了什么,所以我删除了所有的转换,只留下了源,问题仍然存在。我只是将一些测试字符串发布到 PubSub。任何帮助表示赞赏。

例外 1:

[WARNING]
java.lang.reflect.InvocationTargetException
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.lang.reflect.Method.invoke(Method.java:606)
        at org.codehaus.mojo.exec.ExecJavaMojo$1.run(ExecJavaMojo.java:293)
        at java.lang.Thread.run(Thread.java:724)
Caused by: 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:471)
        at java.util.concurrent.FutureTask.run(FutureTask.java:262)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)

例外 2:

[WARNING]
java.lang.reflect.InvocationTargetException
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.lang.reflect.Method.invoke(Method.java:606)
        at org.codehaus.mojo.exec.ExecJavaMojo$1.run(ExecJavaMojo.java:293)
        at java.lang.Thread.run(Thread.java:724)
Caused by: java.lang.IllegalStateException: Cannot finalize a restored checkpoint
        at org.apache.beam.sdk.repackaged.com.google.common.base.Preconditions.checkState(Preconditions.java:444)
        at org.apache.beam.sdk.io.PubsubUnboundedSource$PubsubCheckpoint.finalizeCheckpoint(PubsubUnboundedSource.java:293)
        at org.apache.beam.runners.direct.UnboundedReadEvaluatorFactory$UnboundedReadEvaluator.finishRead(UnboundedReadEvaluatorFactory.java:205)
        at org.apache.beam.runners.direct.UnboundedReadEvaluatorFactory$UnboundedReadEvaluator.processElement(UnboundedReadEvaluatorFactory.java:142)
        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:471)
        at java.util.concurrent.FutureTask.run(FutureTask.java:262)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)

基本代码:

PipelineOptions options = PipelineOptionsFactory.create(); 
PubsubOptions dataflowOptions = options.as(PubsubOptions.class);
dataflowOptions.setStreaming(true);

Pipeline p = Pipeline.create(options);

p.apply(PubsubIO.<String>read().subscription("my-subscription")
    .withCoder(StringUtf8Coder.of())));

执行:

mvn compile exec:java -Dexec.mainClass=my.package.SalesTransactions -Dexec.args="--runner BlockingDataflowRunner --project=my-project --tempLocation=gs://my-project/tmp"

【问题讨论】:

    标签: google-cloud-dataflow google-cloud-pubsub apache-beam


    【解决方案1】:

    由于 DirectRunner 中的错误 (BEAM-1656) 和 PubsubCheckpoint 中的前提条件而存在此问题。

    答案Apache Beam: PubsubReader fails with NPE 包含有关该错误及其解决方法的更多信息。谢谢!

    【讨论】:

    • 感谢您的回答。我已经更新到最新的快照,并且最初充满希望,因为它没有立即发生,但似乎在一段时间后,上面的 NullPointerException 仍在发生。
    • github.com/apache/beam/pull/2368 解决了 PubSub 中的一个错误,该错误很快就会提交。对于给您带来的不便,我深表歉意。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-01-09
    • 2022-12-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-10-24
    相关资源
    最近更新 更多