【问题标题】:Using google datastore to check items in streaming mode使用谷歌数据存储在流模式下检查项目
【发布时间】:2016-11-21 16:41:50
【问题描述】:

如果项目中不存在,我想将它们插入到 Google 数据存储中。 我写了一个数据流流作业。

工作

static class RawToObjectConverter extends DoFn<String, Entity> {
    @Override
    public void processElement(ProcessContext c) {      

        Query<Entity> query = Query.entityQueryBuilder().kind("Post").filter(PropertyFilter.eq("postid", rq.postid))
                .build();
        QueryResults<Entity> posts = datastore.run(query);

        if (posts == null || !posts.hasNext()) {
            Entity post = Entity.builder(datastore.newKeyFactory().newKey("Post"))                 
                     .set("postid", "1")
                    .set("title", "p1")
                    .build();
            c.output(post);
        }           
    }
}

问题

lines.apply(ParDo.of(new RawToObjectConverter()))
    .apply(DatastoreIO.v1().write().withProjectId(projectid));

PCollection&lt;Entity&gt; 类型中的方法apply(PTransform&lt;? super PCollection&lt;Entity&gt;,OutputT&gt;) 不适用于参数(DatastoreV1.Write

我还应该使用com.google.cloud.datastore.Datastore 还是com.google.datastore.v1.Entity

【问题讨论】:

    标签: google-cloud-platform google-cloud-datastore google-cloud-dataflow


    【解决方案1】:

    您需要在 RawToObjectConverter 中将您的 com.google.cloud.datastore.Entity 转换为 com.google.datastore.v1.Entity > 在使用 DatastoreIO.v1().write() 之前, 使用toPb方法

    c.output(post.toPb());
    

    【讨论】:

    猜你喜欢
    • 2020-03-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-08-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多