这是我将代码写入新BigQuery表的代码:
PCollection<TableRow> lhReports = results.get(BigQueryImport.LIGHTHOUSE_TAG);
lhReports.apply(BigQueryIO.Write
.named("write-lighthouse")
.to(getBigQueryOutput(options, "lighthouse"))
.withSchema(lhReportSchema)
.withCreateDisposition(BigQueryIO.Write.CreateDisposition.CREATE_IF_NEEDED)
.withWriteDisposition(BigQueryIO.Write.WriteDisposition.WRITE_TRUNCATE));
有一半时间我的管道没有要写的任何行,但是无论如何都会创建表。 我想确保我不创建任何空表。
我检查的第一件事是CREATE_IF_NEEDED
的工作原理。它只是指定如果表尚不存在,则可以创建该表。没有其他CreateDisposition
枚举取决于输出长度。
我对Dataflow并不是非常复杂,所以我的下一个想法是将管道包装起来,首先检查PCollection
,lhReports
的大小。但我在API中没有看到任何类型的大小/长度方法。
我是在正确的轨道上吗?