【问题标题】:Is there any way I can limit record while performing TextIO?有什么办法可以在执行 TextIO 时限制记录?
【发布时间】:2020-02-22 09:29:04
【问题描述】:

我有一个用例,我正在读取大约数十亿条记录,但我需要限制记录以查看数据行为。我有一个赦免,我正在分析有限的数据并在此基础上执行一些功能。但我正在读取整十亿条记录,然后在 Pardo 中应用限制以获得 10000 条记录。由于我的管道正在读取数十亿条记录,因此会影响管道性能。有什么办法可以限制记录,同时使用 TextIO 读取文本文件。

【问题讨论】:

  • 您能提供更多信息吗?您使用哪种语言?您使用哪种光束方式阅读?
  • @rmesteves 我正在使用 java 的云数据流。我正在使用 TextIO.read 方法从 GCS 读取数据。

标签: google-cloud-dataflow apache-beam apache-beam-io


【解决方案1】:

您从哪里读取记录?我认为答案取决于此。

如果他们都来自,例如同一个文件,那么我认为 Beam 不支持对其中的一部分进行采样。如果是,例如来自不同的文件,也许您可​​以设计您使用的文件匹配模式,以便您只读取其中的一部分?

【讨论】:

  • 是的,我正在为隔离文件使用文件匹配,但在某些情况下,我有未分片的文件。我正在尝试在非分片文件中进行采样。
【解决方案2】:

您可能必须尝试使用​​Sample 转换,例如Sample.any(10000)。也许,它会工作得更快。

【讨论】:

  • 此方法适用于输入 PCollection,因为我必须读取所有文件,然后才能应用 Sample.any,所以这就是我目前正在做的事情。而不是读取所有文件,我希望它在 TextIO 中读取时完成。
  • 我认为 TextIO 不可能。根据您的数据知识和分布情况,预处理文件(选择要读取的文件)可能会更容易。
猜你喜欢
  • 2014-11-25
  • 2020-07-06
  • 1970-01-01
  • 2021-12-26
  • 1970-01-01
  • 2010-09-19
  • 1970-01-01
  • 1970-01-01
  • 2013-06-17
相关资源
最近更新 更多