Невозможно запустить GCP DataflowTemplates локально - PullRequest
0 голосов
/ 22 января 2019

Я пытаюсь запустить PubSubToBigQuery.java локально, используя https://github.com/GoogleCloudPlatform/DataflowTemplates с прямым запуском.Однако я получаю сообщение об ошибке

Exception in thread "main" java.lang.IllegalArgumentException: Class interface com.google.cloud.teleport.templates.PubSubToBigQuery$Options missing a property named 'gcs-location'.
    at org.apache.beam.sdk.options.PipelineOptionsFactory.parseObjects(PipelineOptionsFactory.java:1518)
    at org.apache.beam.sdk.options.PipelineOptionsFactory.access$400(PipelineOptionsFactory.java:111)
    at org.apache.beam.sdk.options.PipelineOptionsFactory$Builder.as(PipelineOptionsFactory.java:294)
    at com.google.cloud.teleport.templates.PubSubToBigQuery.main(PubSubToBigQuery.java:165)

Но я уже передал --gcs-location=gs://xxx-templates/dataflow/pipelines/pubsub-to-bigquery во время выполнения.

Именно на этой строке выдается ошибка.https://github.com/GoogleCloudPlatform/DataflowTemplates/blob/master/src/main/java/com/google/cloud/teleport/templates/PubSubToBigQuery.java#L176

https://beam.apache.org/documentation/runners/direct/

1 Ответ

0 голосов
/ 22 января 2019

Вы путаете аргументы, передаваемые в Java-приложение, с аргументами, передаваемыми для запуска шаблонного конвейера через CLI.

--gcs-location - это то, что вы передаете gcloud dataflow jobs run в CLI.Когда вы запускаете приложение Java, Dataflow помещает ваш конвейер в GCS (шаблон), но не запускает конвейер немедленно.--gcs-location сообщает gcloud dataflow.. расположение шаблона для запуска.

Вы не можете выполнить шаблонный конвейер локально.Вы просто запускаете подготовку шаблона локально через приложение Java.

https://cloud.google.com/dataflow/docs/guides/templates/executing-templates

<code> * # Set the runner
 * RUNNER=DataflowRunner
 *
 * # Build the template <--NOTE THIS
 * mvn compile exec:java \
 * -Dexec.mainClass=com.google.cloud.teleport.templates.PubSubToBigQuery \
 * -Dexec.cleanupDaemonThreads=false \
 * -Dexec.args=" \
 * --project=${PROJECT_ID} \
 * --stagingLocation=${PIPELINE_FOLDER}/staging \
 * --tempLocation=${PIPELINE_FOLDER}/temp \
 * --templateLocation=${PIPELINE_FOLDER}/template \
 * --runner=${RUNNER}"
 *
 * # Execute the template <--NOTE THIS
 * JOB_NAME=pubsub-to-bigquery-$USER-`date +"%Y%m%d-%H%M%S%z"`
 *
 * gcloud dataflow jobs run ${JOB_NAME} \
 * --gcs-location=${PIPELINE_FOLDER}/template \
 * --zone=us-east1-d \
 * --parameters \
 * "inputTopic=projects/data-analytics-pocs/topics/teleport-pubsub-to-bigquery,\
 * outputTableSpec=data-analytics-pocs:demo.pubsub_to_bigquery,\
 * outputDeadletterTable=data-analytics-pocs:demo.pubsub_to_bigquery_deadletter"
 * 
* /
...