我有一个数据流管道,它从GCS中的文件读取数据,转换它并将结果放到BQ。 我创建了测试,检查预期的TableRows是否在PCollection中,但是 我如何根据我提供的db模式验证将写入BQ的数据是正确的?
tableRowPCollection.apply(BigQueryIO.Write.named("Write to table").to(options.getTableName())
.withCreateDisposition(CREATE_IF_NEEDED).withSchema(someSchema).
withWriteDisposition(BigQueryIO.Write.WriteDisposition.WRITE_TRUNCATE));
答案 0 :(得分:0)
我假设您要验证BigQueryIO
本身是否不会损坏PCollection
中的数据?
我不认为有一个很好的方法可以做到这一点 - 当然,除了当然正在运行管道,然后读取数据并验证它(你可以使用BigQueryIO.Read
来阅读数据返回以及一些PAssert
来验证它 - 但我假设你正在寻找更轻量级的东西。
但是,您还可以查看BigQueryIO
本身的测试方式,例如: this test。重要的方法是withTestServices
(BigQueryIO.Read
和BigQueryIO.Write
都有) - 但是,它是一个包本地实现细节,并不打算由管道编写者使用。