当前使用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));

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

有没有一种方法可以代替设置数量的分片,设置文件大小并使分片动态化?

#1楼 票数:1 已采纳

通过设计,这是不可能的。 如果您深入了解Beam的核心,请以编程方式定义执行图,然后运行它。 该过程在同一节点或多个节点/ VM上是大规模并行的( ParDo表示“并行执行”)。

在这里,分片的数量就是可以并行工作以写入文件的“作家”的数量。 然后将PCollection拆分为所有工作人员写作。

大小是非常可变的(例如,消息的大小,文本编码,是否压缩以及压缩因子...),Beam不能依靠它来构建其图形。

  ask by Adam Ramos translate from so

未解决问题?本站智能推荐:

1回复

从BigQuery读取数据并将其写入云存储中的avro文件格式

我的目标是从BigQuery表中读取数据,然后使用Java将其写入云存储中的Avro文件中。 如果有人提供代码snipet / ideas来编写BigQuery表数据并将其使用Cloud Dataflow写入avro格式数据,那将是很好的。
1回复

用BigQuery读取JSON文件来制作表格

我是Google Dataflow的新手,无法使用JSON。 我一直在阅读整个文档,但无法解决我的问题。 因此,在WordCount示例之后,我想到了如何使用下一行从.csv文件加载数据 其中input.cile来自我的gcloud存储桶中的.csv文件。 我可以用.csv转换
1回复

Google数据流:PCollection 到PCollection 用于BigQuery插入

我是Google Cloud Platform的新手,我正在为我的研究生课程项目首次尝试Google Dataflow。 我想做的是编写一个自动加载作业,该作业从Cloud Storage上某个存储桶加载文件,并将数据从其中插入BigQuery表。 我以PCollection<St
1回复

google-cloud-dataflow:如何从数据库读取数据并写入BigQuery

我需要从某些源数据库(如Oracle,MySQL)设置数据管道,并将数据加载到BigQuery。 如何使用google-cloud-dataflow从数据库(jdbc连接)读取数据并使用Python写入BigQuery表。 另外,我在本地Hadoop群集中有一些配置单元表,如何将这些
1回复

使用 Dataflow 的 DLP 从 GCS 读取并写入 BigQuery - 只有 50% 的数据写入 BigQuery

我最近启动了一个 Dataflow 作业,从 GCS 加载数据,并通过 DLP 的标识模板运行它,并将屏蔽数据写入 BigQuery。 我找不到 Google 提供的批处理模板,因此使用了流式处理模板(参考: 链接)。 我看到只有 50% 的行被写入目标 BigQuery 表。 即使管道处于运行状态
1回复

使用Google数据流从本地计算机读取文件并写入BigQuery或Google存储空间

有没有办法从本地计算机读取csv文件,然后使用Google数据流将其写入大型查询或存储? 如果存在,应使用哪个流道? 所有Google数据流示例都可以从云中读取并写入到云存储或大型查询中。 我使用DirectPipelineRunner从本地计算机读取并写入本地计算机。
2回复

阅读Avro文件并将其写入BigQuery表

我的目标是从云存储中读取avro文件数据,并使用Java将其写入BigQuery表。 如果有人提供代码snipet / ideas来读取avro格式数据并使用Cloud Dataflow将其写入BigQuery表,那将是一件好事。
1回复

Dataflow - 将 avro 对象存储到未知的 GCS 文件夹

我有一个 DataFlow 管道,它使用来自 Cloud Pub/Sub 的 JSON 消息,将它们转换为 Avro 并将它们存储到 Google Cloud Storage。 有没有办法让 DataFlow 根据某个 JSON 字段将每个 Avro 对象存储到 GCS 中的不同文件夹,如果它的值