簡體   English   中英

如何從Google App Engine應用程序運行Google Dataflow管道?

[英]How do I run a Google Dataflow pipeline from a Google App Engine app?

我需要定期運行數據流管道。 數據流常見問題說明如下:

您可以通過Google App Engine或GCE上的自定義(CRON)作業流程來自動執行管道。 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)
    ...

有任何想法嗎?

我知道您正在使用Java; 但是,此示例逐步介紹了如何從GAE Python Flex應用程序執行此操作,可能會有所幫助: http : //amygdala.github.io/dataflow/app_engine/2017/04/14/gae_dataflow.html

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM