【发布时间】:2016-09-05 16:55:02
【问题描述】:
我正在尝试使用 com.google.cloud.datastore 从 DataFlow 写入 DataStore。
我的代码如下所示(灵感来自 [1] 中的示例):
public void processElement(ProcessContext c) {
LocalDatastoreHelper HELPER = LocalDatastoreHelper.create(1.0);
Datastore datastore = HELPER.options().toBuilder().namespace("ghijklmnop").build().service();
Key taskKey = datastore.newKeyFactory()
.ancestors(PathElement.of("TaskList", "default"))
.kind("Task")
.newKey("sampleTask");
Entity task = Entity.builder(taskKey)
.set("category", "Personal")
.set("done", false)
.set("priority", 4)
.set("description", "Learn Cloud Datastore")
.build();
datastore.put(task);
}
我收到此错误:
exception: "java.lang.RuntimeException: com.google.cloud.dataflow.sdk.util.UserCodeException: com.google.cloud.datastore.DatastoreException: I/O error
at com.google.cloud.dataflow.sdk.runners.worker.SimpleParDoFn$1.output(SimpleParDoFn.java:162)
at com.google.cloud.dataflow.sdk.util.DoFnRunnerBase$DoFnContext.sideOutputWindowedValue(DoFnRunnerBase.java:314)
at com.google.cloud.dataflow.sdk.util.DoFnRunnerBase$DoFnProcessContext.sideOutput(DoFnRunnerBase.java:470)
at com.google.cloud.dataflow.sdk.transforms.Partition$PartitionDoFn.processElement(Partition.java:172)
我尝试使用 DatastoreIO 接收器,但目前流式运行器似乎不支持它。
我怎样才能避免这个错误?或者从 DataFlow 写入 DataStore 的最佳方式是什么?
【问题讨论】:
-
您是否遇到了与stackoverflow.com/questions/35417993/… 类似的问题?您是否验证过代码与 Datastore 正常交互,独立于 Dataflow?
标签: java google-cloud-platform google-cloud-datastore google-cloud-dataflow