我曾尝试在apache Beam JAVA sdk中使用JsonTimePartitioning类将数据写入bigquery中的动态表,但是我得到JsonTimePartitioning类的“找不到符号”。
这是我尝试导入课程的方式
import com.google.api.services.bigquery.model.JsonTimePartitioning;
这就是我尝试在管道中使用它的方式
.withWriteDisposition(WriteDisposition.WRITE_APPEND)
.withJsonTimePartitioningTo(new JsonTimePartitioning().setType("DAY")));
答案 0 :(得分:0)
我似乎在任何地方都找不到JsonTimePartitioning
。您能否指出您要遵循的示例? BigQueryIO
上的现有方法要么接受TimePartiotioning
的实例,要么接受实际上是同一TimePartitioning
的JSON序列化实例的value-provider for a String
。实际上,当调用该方法的TimePartitioning
版本时,您仍然只剩下serializing it into string internally:。您可以找到here的用法示例:
将历史数据加载到按时间划分的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"))); ```