数据流2.X中的BigQueryIO.Write

时间:2017-11-16 19:17:04

标签: google-cloud-dataflow apache-beam

以下代码适用于Dataflow 1.9 sdk,迁移到2.X

PCollection<TableRow> tableRow = ...

tableRow.apply(BigQueryIO.Write()
                .to(String.format("%1$s:%2$s.%3$s",projectId, bqDataSet, bqTable))
                .withSchema(schema)
                .withWriteDisposition(BigQueryIO.Write.WriteDisposition.WRITE_APPEND));

我得到了

The method apply(PTransform<? super PCollection<TableRow>,OutputT>) in the type PCollection<TableRow> is not applicable for the arguments (BigQueryIO.Write<Object>)

Release notes在这里没有多大帮助,2.X上的文档是不存在的重定向到梁API页面。

2 个答案:

答案 0 :(得分:1)

您是否尝试过使用BigqueryIO.writeTableRows()?

Apache Beam 2.1.0 BigqueryIO文档 https://beam.apache.org/documentation/sdks/javadoc/2.1.0/org/apache/beam/sdk/io/gcp/bigquery/BigQueryIO.html

答案 1 :(得分:0)

您可以尝试明确提供TableRow类型(BigQuery.<TableRow>write()...)或使用上面建议的BigQuery.writeTableRows()

看起来界面在2.x中是通用的。早期的版本有TableRow硬编码。