目前使用 Dataflow 从 BigQuery 读取表数据,并使用一定数量的分片写入 Cloud Storage。//Read Main InputPCollection<TableRow> input = pipeline.apply("ReadTableInput", BigQueryIO.readTableRows().from("dataset.table"));// process and write filesinput.apply("ProcessRows", ParDo.of(new Process()) .apply("WriteToFile", TextIO.write() .to(outputFile) .withHeader(HEADER) .withSuffix(".csv") .withNumShards(numShards));为了管理文件大小,我们估计了将文件保持在一定大小所需的分片总数。有没有办法代替设置分片数量,设置文件大小并让分片动态?
1 回答
MMMHUHU
TA贡献1834条经验 获得超8个赞
根据设计,这是不可能的。如果您深入研究 Beam 的核心,您可以通过编程方式定义一个执行图,然后运行它。ParDo
该过程在同一节点或多个节点/VM 上是大规模并行的(意味着“并行执行”)。
这里的分片数量只是并行工作以写入文件的“写入器”的数量。然后PCollection将被拆分给所有worker写入。
大小变化很大(例如消息的大小、文本编码、压缩与否以及压缩因子……),Beam 不能依赖它来构建其图形。
添加回答
举报
0/150
提交
取消