Невозможно создать шаблон потока данных облака Google с помощью команды CLI, используя Java - PullRequest
1 голос
/ 16 апреля 2019

Я работаю над проектом Google App Engine, я создал один класс для задания потока данных облака Google и попытался выполнить шаги https://cloud.google.com/dataflow/docs/guides/templates/creating-templates#creating-and-staging-templates? Но когда я пытаюсь выполнить команду, указанную в ссылке, запускается задание потока данных.выполнение сразу, я не хочу начинать выполнение. Я просто хочу создать шаблон и выполнить его позже

Команда, которую я пытался выполнить, и создать шаблон:

mvn compile exec: java -Dexec.mainClass = com.testUtils.TimeSpentDataFlow -Dexec.args = "- runner = DataflowRunner --project = my-project-id --stagingLocation = gs: // staging --templateLocation = gs: // MyTemplateData16Apr19"

Я также пробовал использовать Custom Option Class, но не повезло.ниже приведен фрагмент моего кода

    public static void main(String[] args) {
        logger.info("main start");
        init();
        logger.info("main end");
    }
    private static void init() {
        DataflowPipelineOptions dataflowOptions = PipelineOptionsFactory.as(DataflowPipelineOptions.class);
        dataflowOptions.setGcpTempLocation("gs://gcpTempLocation/");
        dataflowOptions.setProject("my-project-id");
        dataflowOptions.setStagingLocation("gs://stagingLocation/");
        dataflowOptions.setRunner(DataflowRunner.class);

        FileSystems.setDefaultPipelineOptions(dataflowOptions);
        Pipeline p = Pipeline.create(dataflowOptions);
    p.apply(Create.of("5435798895722496"))
         .apply(new PrintData());
         p.run().waitUntilFinish();
    }

Когда я пытаюсь выполнить команду для программы WordCount по умолчанию, шаблон создается, но если я пытаюсь выполнить ту же команду с моим пользовательским классом, он начинает выполнять

1 Ответ

1 голос
/ 16 апреля 2019

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

DataflowPipelineOptions dataflowOptions =
     PipelineOptionsFactory.fromArgs(args)
        .withValidation()
        .as(DataflowPipelineOptions.class);

Другой вариант - установить местоположение шаблона:

dataflowOptions.setTemplateLocation("gs://MyTemplateData16Apr19");
...