2017-03-23 4 views
0

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

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

이 문제는 DirectRunner의 버그 (BEAM-1656)와 PubsubCheckpoint 내 전제 조건으로 존재한다. DirectRunner의 버그는 pull request 2237에서 수정되었으며, Github master 브랜치에 병합되었지만 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> 
+0

감사를 사용할 수 있도록 모든 모듈이 특정 버전으로 내장되어 있습니다. 0.7.0-SNAPSHOT으로 업그레이드하는 것은 그 오류를 해결하는 것으로 보이지만 다른 하나는'java.lang.IllegalStateException : org.apache.beam.sdks.java.core.repackaged.com.google.common.base의 영구 검사 점에서 nackAll을 사용할 수 없습니다. (org.apache.beam : beam-sdks-java-core : 0.7.0-SNAPSHOT ", "org.apache.beam : beam-sdks-java-core : 0.7.0-SNAPSHOT ","org.apache.beam : beam-runners-google-cloud-dataflow-java : 0.7.0-SNAPSHOT ","org.apache. beam-runners-direct-java : 0.7.0-SNAPSHOT " – gk888

+0

두 가지 다른 문제 [BEAM-1182] (https://issues.apache.org/jira/browse/BEAM)의 조합으로 인해 실패했습니다. -1182) 및 [BEAM-1655] (https://issues.apache.org/jira/browse/BEAM-1655)를 참조하십시오. 당겨 받기 요청 [# 2323] (https://github.com/apache/beam/pull/2323)은 BEAM-1182를 수정하여 밤의 야간 빌드가 예상대로 작동합니다. –

+0

야간 빌드가 문제를 해결 한 것으로 보입니다. 토마스 감사합니다. – gk888

관련 문제