Apache Beam : PubsubReader가 NPE와 함께 실패합니다.

gk888 03/23/2017. 1 answers, 132 views
apache-beam

PubSub에서 읽고 변형을 적용한 후에 BigQuery에 쓰는 빔 파이프 라인이 있습니다. 파이프 라인은 NPE와 일관되게 실패합니다. 빔 SDK 버전 0.6.0을 사용하고 있습니다. 내가 잘못하고있는 것에 대한 어떤 생각? DirectRunner로 파이프 라인을 실행하려고합니다.

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) java.util.concurrent.ThreadPoolExecutor.runWorker (ThreadPoolExecutor.java:1142)에서의 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) java.util.concurrent.ThreadPoolExecutor $ Worker.run (ThreadPoolExecutor.java:617)에서 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 Answers


Thomas Groh 03/24/2017.

이 문제는 DirectRunner의 버그 ( BEAM-1656 )와 PubsubCheckpoint의 전제 조건으로 인해 발생합니다. DirectRunner의 버그는 Github master 브랜치에 병합되었지만 0.6.0 릴리스 후에 pull 요청 2237 에서 수정되었습니다.

DirectRunner를 사용할 때 0.7.0 야간 빌드로 업데이트하거나 github HEAD에서 빌드하면이 문제가 해결됩니다.

현재 야간 빌드로 업데이트하려면 프로젝트의 pom.xml 다음 리포지토리를 추가해야합니다. 수정본이 포함 된 beam-runners-direct-java 모듈의 가장 오래된 버전은 0.7.0-20170316.070901-9 이지만 모든 모듈이이 특정 버전으로 빌드 된 것은 아니므로 개별 호환 버전을 지정하거나 0.7.0-SNAPSHOT 사용해야 할 수도 있습니다 0.7.0-SNAPSHOT

              apache.snapshots        Apache Development Snapshot Repository https://repository.apache.org/content/repositories/snapshots/                  false                          true                   
3 comments
gk888 03/24/2017
감사. 0.7.0-SNAPSHOT으로 업그레이드하면 오류가 해결되지만 다른 오류가 발생합니다 java.lang.IllegalStateException: Cannot nackAll on persisting checkpoint at org.apache.beam.sdks.java.core.repackaged.com.google.common.‌​base.Preconditions.c‌​heckState(Preconditi‌​ons.java:444) org.apache.beam : beam-sdks-java-core : 0.7.0-SNAPSHOT) ","org.apache.beam "입니다. : 0.7 -0-SNAPSHOT ","org.ap ache.beam : beam-runne rs-google-cloud-data flow-java : 0.7 - 빔 - sdks - 자바 - io - 구글 - 구름 - 플랫폼 : 0.7. .0-SNAP SHOT ","org.apache.be am : beam-runners-dire ct-java : 0.7.0-SNAPSH OT "
Thomas Groh 03/24/2017
이것은 BEAM-1182BEAM-1655 의 두 가지 문제가 결합되어 발생하는 오류입니다. 요청 2323은 BEAM-1182를 수정하므로 밤에 야간 빌드가 예상대로 작동해야합니다.
gk888 03/28/2017
야간 빌드가 문제를 해결 한 것으로 보입니다. 토마스 감사합니다.

Related questions

Hot questions

Language

Popular Tags