猿问

在 Dataflow 中从 BigQuery 写入 Cloud Storage 时如何设置文件大小而

目前使用 Dataflow 从 BigQuery 读取表数据,并使用一定数量的分片写入 Cloud Storage。


//Read Main Input

PCollection<TableRow> input = pipeline.apply("ReadTableInput",

    BigQueryIO.readTableRows().from("dataset.table"));


// process and write files

input.apply("ProcessRows", ParDo.of(new Process())

    .apply("WriteToFile", TextIO.write()

        .to(outputFile)

        .withHeader(HEADER)

        .withSuffix(".csv")

        .withNumShards(numShards));

为了管理文件大小,我们估计了将文件保持在一定大小所需的分片总数。


有没有办法代替设置分片数量,设置文件大小并让分片动态?


函数式编程
浏览 87回答 1
1回答

MMMHUHU

根据设计,这是不可能的。如果您深入研究 Beam 的核心,您可以通过编程方式定义一个执行图,然后运行它。ParDo该过程在同一节点或多个节点/VM 上是大规模并行的(意味着“并行执行”)。这里的分片数量只是并行工作以写入文件的“写入器”的数量。然后PCollection将被拆分给所有worker写入。大小变化很大(例如消息的大小、文本编码、压缩与否以及压缩因子……),Beam 不能依赖它来构建其图形。
随时随地看视频慕课网APP

相关分类

Java
我要回答