DataflowRunner завершает работу с «Не найдено файлов для этапа». - PullRequest
2 голосов
/ 08 марта 2020

Я хочу запустить пример WordCount java из https://beam.apache.org/get-started/quickstart-java/, но каким-то образом я получаю сообщение об ошибке, что ClasspathScanningResourcesDetector не найдено файлов для обработки. Я запускаю пример в точности так, как описано на сайте:

 mvn compile exec:java -Dexec.mainClass=org.apache.beam.examples.WordCount \
     -Dexec.args="--runner=DataflowRunner --project=<your-gcp-project> \
                  --gcpTempLocation=gs://<your-gcs-bucket>/tmp \
                  --inputFile=gs://apache-beam-samples/shakespeare/* --output=gs://<your-gcs-bucket>/counts" \
     -Pdataflow-runner

, что дает

Caused by: java.lang.reflect.InvocationTargetException
    at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.base/java.lang.reflect.Method.invoke(Method.java:566)
    at org.apache.beam.sdk.util.InstanceBuilder.buildFromMethod(InstanceBuilder.java:214)
    ... 5 more
Caused by: java.lang.IllegalArgumentException: No files to stage has been found.
    at org.apache.beam.runners.dataflow.DataflowRunner.fromOptions(DataflowRunner.java:281)
    ... 10 more

Я использую последнюю версию луча

<beam.version>2.19.0</beam.version>

Делаете ли вы знаете, как это исправить?

РЕДАКТИРОВАТЬ: Это ошибка в 2.19.0. Он работает в 2.18.0

РЕДАКТИРОВАТЬ: Я использую Redhat OpenJDK 8 на Windows

РЕДАКТИРОВАТЬ: Кроме того, некоторые модульные тесты сбой из стандартного примера wordcount

ОтладкаWordCountTest завершается с

org.apache.beam.sdk.Pipeline$PipelineExecutionException: java.io.FileNotFoundException: No files matched spec: /Users/<redacted>/AppData/Local/Temp/junit7907687962995108435/junit2682353785908929665.tmp

    at org.apache.beam.sdk.Pipeline.run(Pipeline.java:321)
    at org.apache.beam.sdk.Pipeline.run(Pipeline.java:301)

1 Ответ

2 голосов
/ 08 марта 2020
  • Когда вы запускаете поток данных, он пытается найти и загрузить зависимости.
  • Я предполагаю, что вы получаете сообщение об ошибке "Не найдены файлы для этапа" из-за некоторой проблемы с classpath.
  • Попробуйте использовать опцию --filesToStage, чтобы вручную предоставить файлы jar или классы для этапа

Также предоставляются примеры журналов, которые успешно скопировали 114 файлов на этап, чтобы вы могли сравнить их с полным журналы, чтобы понять проблему.

Mar 08, 2020 7:37:41 PM org.apache.beam.runners.dataflow.options.DataflowPipelineOptions$StagingLocationFactory create
INFO: No stagingLocation provided, falling back to gcpTempLocation
Mar 08, 2020 7:37:42 PM org.apache.beam.runners.dataflow.DataflowRunner fromOptions
INFO: PipelineOptions.filesToStage was not specified. Defaulting to files from the classpath: will stage 114 files. Enable logging at DEBUG level to see which files will be staged.
Mar 08, 2020 7:37:43 PM org.apache.beam.runners.dataflow.DataflowRunner run
INFO: Executing pipeline on the Dataflow Service, which will have billing implications related to Google Compute Engine usage and other Google Cloud Services.
Mar 08, 2020 7:37:43 PM org.apache.beam.runners.dataflow.util.PackageUtil stageClasspathElements
INFO: Uploading 114 files from PipelineOptions.filesToStage to staging location to prepare for execution.
Mar 08, 2020 7:37:48 PM org.apache.beam.runners.dataflow.util.PackageUtil stageClasspathElements
INFO: Staging files complete: 114 files cached, 0 files newly uploaded

Вы можете попробовать следующие команды, чтобы сгенерировать требуемый исходный код и заново запустить конвейер для определения зависимостей.

mvn archetype:generate \
      -DarchetypeGroupId=org.apache.beam \
      -DarchetypeArtifactId=beam-sdks-java-maven-archetypes-examples \
      -DarchetypeVersion=2.8.0 \
      -DgroupId=org.example \
      -DartifactId=first-dataflow \
      -Dversion="0.1" \
      -Dpackage=org.apache.beam.examples \
      -DinteractiveMode=false

Также вы можете попробовать это в qwiklabs бесплатно: https://google.qwiklabs.com/focuses/7974?parent=catalog

...