Как запустить конвейер потока данных Google из приложения Google App Engine?

Мне нужно регулярно запускать конвейер потока данных. FAQ для Dataflow гласит следующее:

Вы можете автоматизировать выполнение конвейера с помощью Google App Engine или настраиваемых (CRON) процессов заданий на GCE. В будущих выпусках SDK будут поддерживаться параметры командной строки для более детального контроля над управлением заданиями.

Я попытался запустить очень простой конвейер из своего Java-приложения, используя этот код:

public class MyAnalyticsServlet extends HttpServlet {
    @Override
    public void doGet(HttpServletRequest req, HttpServletResponse resp) throws IOException {
        resp.setContentType("text/plain");
        if (req.getRequestURI().equals("/dataflow/test")) {
            DataflowPipelineOptions options = PipelineOptionsFactory.create().as(DataflowPipelineOptions.class);
            options.setProject("redacted");
            options.setRunner(DataflowPipelineRunner.class);
            Pipeline p = Pipeline.create(options);
            p.apply(TextIO.Read.named("TestInput").from("gs://redacted/test/in.txt"))
                    .apply(new TestTransform())
                    .apply(TextIO.Write.named("TestOutput")
                            .to("gs://redacted/test")
                            .withNumShards(0));
            p.run();
        } else {
            resp.setStatus(404);
            resp.getWriter().println("Not Found");
            return;
        }
        resp.getWriter().println("OK");
    }
}

Я получаю следующую ошибку:

java.lang.IllegalArgumentException: Methods [setRunner(Class), getRunner()] on [com.google.cloud.dataflow.sdk.options.PipelineOptions] do not conform to being bean properties.
    at com.google.common.base.Preconditions.checkArgument(Preconditions.java:145)
    at com.google.cloud.dataflow.sdk.options.PipelineOptionsFactory.validateClass(PipelineOptionsFactory.java:1059)
    ...

Любые идеи?


person Blixt    schedule 30.04.2015    source источник
comment
У меня есть простой конвейер, который запускает wordcount в AppEngine, я использую последнюю версию SDK Dataflow (search.maven.org/). Вы собираете из Github или используете последнюю версию от Maven?   -  person Lukasz Cwik    schedule 04.05.2015
comment
какую версию SDK вы используете?   -  person Graham Polley    schedule 05.05.2015
comment
Может ли кто-нибудь еще подтвердить возможность запуска потока данных из AppEngine?   -  person Lukasz Cwik    schedule 06.05.2015
comment
В этом ответе подробно рассказывается о запуске Dataflow в Google AppEngine.   -  person Sam McVeety    schedule 17.01.2016
comment
stackoverflow.com/questions/34130899/   -  person Lukasz Cwik    schedule 01.07.2016


Ответы (1)


Я знаю, что вы используете Java; однако этот пример, в котором показано, как это сделать из приложения GAE Python Flex, может быть полезным: http://amygdala.github.io/dataflow/app_engine/2017/04/14/gae_dataflow.html

person Amy U.    schedule 24.04.2017