Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/356.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何从Google应用程序引擎应用程序运行Google数据流管道?_Java_Google App Engine_Google Cloud Dataflow - Fatal编程技术网

Java 如何从Google应用程序引擎应用程序运行Google数据流管道?

Java 如何从Google应用程序引擎应用程序运行Google数据流管道?,java,google-app-engine,google-cloud-dataflow,Java,Google App Engine,Google Cloud Dataflow,我需要定期运行数据流管道。声明如下: 您可以通过谷歌应用程序引擎或GCE上的自定义(CRON)作业流程自动执行管道。SDK的未来版本将支持命令行选项,以便对作业管理进行更细粒度的控制 我尝试从Java应用程序运行一个非常简单的管道,使用以下代码: public class MyAnalyticsServlet extends HttpServlet { @Override public void doGet(HttpServletRequest req, HttpServletR

我需要定期运行数据流管道。声明如下:

您可以通过谷歌应用程序引擎或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应用程序执行此操作,可能会有所帮助:

我有一个简单的管道,在AppEngine中运行wordcount,我使用最新的Dataflow SDK()。您是从Github构建还是使用Maven的最新版本?您使用的SDK版本是什么?其他人能否确认能够从AppEngine中启动数据流?详细介绍了如何在Google AppEngine上运行数据流。