我刚刚开始学习如何使用某些Google云端产品。 我目前正忙于使用Cloud Dataflow。 我决定开始写简单的程序。 它只是从Bigquery表读取而不是写入另一个表。
这项工作失败了。
Pipeline p = Pipeline.create(options);
PCollection<TableRow> data = p.apply(BigQueryIO.Read.named("test")
.fromQuery("select itemName from `Dataset.sampletable`").usingStandardSql());
List<TableFieldSchema> fields = new ArrayList<>();
fields.add(new TableFieldSchema().setName("category").setType("STRING"));
TableSchema schema = new TableSchema().setFields(fields);
data.apply(BigQueryIO.Write.named("Write").to("Dataset.dataflow_test")
.withSchema(schema)
.withWriteDisposition(BigQueryIO.Write.WriteDisposition.WRITE_TRUNCATE)
.withCreateDisposition(BigQueryIO.Write.CreateDisposition.CREATE_IF_NEEDED));
p.run();
}
错误代码:
(6093f22a86dc3c25):工作流程失败。原因:(6093f22a86dc389a):S01:测试/ DataflowPipelineRunner.BatchBigQueryIONativeRead +写/ DataflowPipelineRunner.BatchBigQueryIOWrite / DataflowPipelineRunner.BatchBigQueryIONativeWrite失败,(709b1cdded98b0f6):在的BigQuery项目创建数据集 “_dataflow_temp_dataset_10172746300453557418” “1234项目” 失败,(709b1cdded98b191): BigQuery执行失败。,(709b1cdded98b22c):错误: 消息:42241429167的IAM setPolicy失败:_dataflow_temp_dataset_10172746300453557418 HTTP代码:400
我可以想象,也许在阅读后立即写下它可能是导致失败的原因。因此,我想知道一个很好的解决方案。