在 Dataflow 中读取和写入表时出现 BigQuery 后端错误
BigQuery Backend error when reading and writing tables in Dataflow
我只在读取然后写入(到不同的 table)时出现此错误。如果我只读取 table,则不会发生错误。例如,下面的代码不会产生任何错误。
Pipeline p = Pipeline.create(
PipelineOptionsFactory.fromArgs(args).withValidation().create());
PCollection<TableRow> BigQueryTableRow = p
.apply(BigQueryIO.Read.named("ReadTable")
.from("project:dataset.data_table"));
p.run();
但是如果我执行以下操作,我会得到 'BigQuery job Backend error'。
Pipeline p = Pipeline.create(
PipelineOptionsFactory.fromArgs(args).withValidation().create());
PCollection<TableRow> BigQueryTableRow = p
.apply(BigQueryIO.Read.named("ReadTable")
.from("project:dataset.data_table"));
TableSchema tableSchema = new TableSchema().setFields(fields);
BigQueryTableRow.apply(BigQueryIO.Write
.named("Write Members to BigQuery")
.to("project:dataset.data_table_two")
.withSchema(tableSchema)
.withWriteDisposition(BigQueryIO.Write.WriteDisposition.WRITE_TRUNCATE)
.withCreateDisposition(BigQueryIO.Write.CreateDisposition.CREATE_IF_NEEDED));
p.run();
有关错误的更多详细信息
BigQuery job "dataflow_job" in project "project-name"
finished with error(s): errorResult: Backend error.
Job aborted.
我自己设法解决了问题。产生后端错误消息是因为我的 table 中有两个重复的字段。
如果我尝试使用 BigQuery 的网络服务输出整个 table,它会显示更有用的错误消息。
Error: Cannot output multiple independently repeated fields
at the same time. Found memberships_is_coach and actions_type
不幸的是,'Backend error' 消息没有提供对问题的真正洞察。还有,当read只读数据,不做任何操作时,不报错,进一步加剧了问题。
我只在读取然后写入(到不同的 table)时出现此错误。如果我只读取 table,则不会发生错误。例如,下面的代码不会产生任何错误。
Pipeline p = Pipeline.create(
PipelineOptionsFactory.fromArgs(args).withValidation().create());
PCollection<TableRow> BigQueryTableRow = p
.apply(BigQueryIO.Read.named("ReadTable")
.from("project:dataset.data_table"));
p.run();
但是如果我执行以下操作,我会得到 'BigQuery job Backend error'。
Pipeline p = Pipeline.create(
PipelineOptionsFactory.fromArgs(args).withValidation().create());
PCollection<TableRow> BigQueryTableRow = p
.apply(BigQueryIO.Read.named("ReadTable")
.from("project:dataset.data_table"));
TableSchema tableSchema = new TableSchema().setFields(fields);
BigQueryTableRow.apply(BigQueryIO.Write
.named("Write Members to BigQuery")
.to("project:dataset.data_table_two")
.withSchema(tableSchema)
.withWriteDisposition(BigQueryIO.Write.WriteDisposition.WRITE_TRUNCATE)
.withCreateDisposition(BigQueryIO.Write.CreateDisposition.CREATE_IF_NEEDED));
p.run();
有关错误的更多详细信息
BigQuery job "dataflow_job" in project "project-name"
finished with error(s): errorResult: Backend error.
Job aborted.
我自己设法解决了问题。产生后端错误消息是因为我的 table 中有两个重复的字段。
如果我尝试使用 BigQuery 的网络服务输出整个 table,它会显示更有用的错误消息。
Error: Cannot output multiple independently repeated fields
at the same time. Found memberships_is_coach and actions_type
不幸的是,'Backend error' 消息没有提供对问题的真正洞察。还有,当read只读数据,不做任何操作时,不报错,进一步加剧了问题。