首页 文章

从Cloud Pubsub到Datastore的数据流管道

提问于
浏览
0

我正在尝试创建和部署Dataflow管道,以将从Cloud Pubsub主题收集的数据流式传输到Cloud Datastore . 但是,我一直遇到如下错误:无法找到符号符号:变量DatastoreIO位置:类DataUpload

当我按照以下文档导入相关包--DatastoreV1以及以下示例代码的语法时,我没有't understand what I' m做错了:https://cloud.google.com/dataflow/java-sdk/JavaDoc/com/google/cloud/dataflow/sdk/io/datastore/DatastoreV1

任何帮助都会大大减轻我这几天一直在做的头撞事 . 提前谢谢!

import com.google.cloud.dataflow.sdk.Pipeline;
import com.google.cloud.dataflow.sdk.io.PubsubIO;
import com.google.cloud.dataflow.sdk.options.DataflowPipelineOptions;
import com.google.cloud.dataflow.sdk.options.PipelineOptionsFactory;
import com.google.cloud.dataflow.sdk.runners.DataflowPipelineRunner;
import com.google.cloud.dataflow.sdk.transforms.DoFn;
import com.google.cloud.dataflow.sdk.transforms.ParDo;
import com.google.cloud.dataflow.sdk.values.PCollection;
import com.google.cloud.dataflow.sdk.io.datastore.DatastoreV1;

public class DataUpload{

    public static void main(String[] args) {
        DataflowPipelineOptions options = PipelineOptionsFactory.create()
                .as(DataflowPipelineOptions.class);

        options.setRunner(DataflowPipelineRunner.class);
        options.setProject(projectName);
        //options.setStagingLocation("gs://my-staging-bucket/staging");
        options.setStreaming(true);

        Pipeline p = Pipeline.create(options);
        p.apply(PubsubIO.Read.topic("projects/{project_name}/topics/data"))
             .apply(DatastoreIO.v1().write().withProjectId(projectId));

        p.run();
    }
}

Update :我已经包含了下面的一行,并得到了一堆新的错误 .

import com.google.cloud.dataflow.sdk.io.datastore.DatastoreIO;

DataUpload.java:[30,14]找不到合适的方法(com.google.cloud.dataflow.sdk.io.datastore.DatastoreV1.Write)方法com.google.cloud.dataflow.sdk.values.PCollection.apply (com.google.cloud.dataflow.sdk.transforms.PTransform,OutputT>)不适用(无法推断类型变量OutputT(参数不匹配; com.google.cloud.dataflow.sdk.io.datastore.DatastoreV1) .Write无法转换为com.google.cloud.dataflow.sdk.transforms.PTransform,OutputT>))方法com.google.cloud.dataflow.sdk.values.PCollection.apply(java.lang.String,com.google .cloud.dataflow.sdk.transforms.PTransform,OutputT>)不适用(无法推断类型变量OutputT(实际和形式参数列表的长度不同))

1 回答

  • 2

    请添加以下import语句,我认为您缺少该语句 .

    import com.google.cloud.dataflow.sdk.io.DatastoreIO
    

    你可以找到一些使用这个的例子和文档here

    如果您使用的是dataflow 2.0,请查看这些java docs,其中包含一些不同的包和方法名称 .

相关问题