使用 apache beam JsonTimePartitioning 在 bigqiery 中创建时间分区表



我尝试在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"))); ```

最新更新