DirectPipelineRunner в потоке данных для чтения с локального компьютера в хранилище Google Cloud
Я попытался запустить конвейер потока данных для чтения с локального компьютера (windows) и записи в облачное хранилище Google с помощью DirectPipelineRunner. Задание не выполнено из-за указанной ниже ошибки, указывающей исключение FileNotFoundException(поэтому я считаю, что задание потока данных не может прочитать мое местоположение). Я запускаю задание с моего локального компьютера для запуска созданного мной шаблона на основе GCP. Я могу видеть его на панели управления потоком данных GCP, но происходит сбой с приведенной ниже ошибкой. Пожалуйста помоги. Я также попробовал IP или имя хоста моей локальной машины вместе с моим локальным местоположением, но столкнулся с этим FileNotFoundException?
Ошибка:
java.io.FileNotFoundException: No files matched spec: C:/data/sampleinput.txt
at org.apache.beam.sdk.io.FileSystems.maybeAdjustEmptyMatchResult(FileSystems.java:172)
at org.apache.beam.sdk.io.FileSystems.match(FileSystems.java:158)
at org.apache.beam.sdk.io.FileBasedSource.split(FileBasedSource.java:261)
at com.google.cloud.dataflow.worker.WorkerCustomSources.splitAndValidate(WorkerCustomSources.java:275)
КОМАНДА, ЧТОБЫ ЗАПУСТИТЬ ШАБЛОН:
gcloud dataflow jobs run jobname --gcs-location gs://<somebucketname of template>/<templatename> --parameters inputFilePattern=C:/data/sampleinput.txt,outputLocation=gs://<bucketname>/output/outputfile,runner=DirectPipelineRunner
КОД:
PCollection<String> textData =pipeline.apply("Read Text Data", TextIO.read().from(options.getInputFilePattern()));
textData.apply("Write Text Data",TextIO.write().to(options.getOutputLocation()));
1 ответ
gcloud dataflow jobs run
Команда запускает вашу работу в облаке Dataflow. Это означает, что работники Dataflow будут пытаться найти C:/data/sampleinput.txt
, которого нет на этих рабочих, очевидно.
Вы можете исправить это, загрузив sampleinput.txt
в ведро и поставьте URI gs://<bucketname>/sampleinput.txt
как inputFilePattern
, Тогда работники потока данных смогут найти ваш входной файл, и задание должно быть выполнено успешно.