我尝试在apache beam JAVA sdk中使用JsonTimePartitioning类将数据写入bigquery中的动态表,但是对于类JsonTimePartitioning,我得到了"找不到符号"。
这就是我尝试导入类的方式
import com.google.api.services.bigquery.model.JsonTimePartitioning;
这就是我尝试在我的管道中使用它的方式
.withWriteDisposition(WriteDisposition.WRITE_APPEND)
.withJsonTimePartitioningTo(new JsonTimePartitioning().setType("DAY")));
我似乎在任何地方都找不到JsonTimePartitioning
。你能指出一个你试图效仿的例子吗?BigQueryIO
上的现有方法要么接受TimePartiotioning
的实例,要么接受实际上是同一TimePartitioning
的 JSON 序列化实例的String
的值提供程序。事实上,当调用该方法的TimePartitioning
版本时,你最终仍然只是在内部将其序列化为字符串:您可以在此处找到如何使用它的示例:
将历史数据加载到按时间分区的 BigQuery 表中 加载 历史数据放入按时间分区的 BigQuery 表中,指定
BigQueryIO.Write.withTimePartitioning(com.google.api.services.bigquery.model.TimePartitioning)
具有用于基于列的分区的字段。例如:PCollection<Quote> quotes = ...; quotes.apply(BigQueryIO.write() .withSchema(schema) .withFormatFunction(quote -> new TableRow() .set("timestamp", quote.getTimestamp()) .set(..other columns..)) .to("my-project:my_dataset.my_table") .withTimePartitioning(new TimePartitioning().setField("time"))); ```