【问题标题】:How to make dataflow apache beam job faster如何使数据流 apache Beam 工作更快
【发布时间】:2019-12-13 02:30:35
【问题描述】:

我有一个 Apache Beam 作业,大约需要 6 个多小时才能完成。我们摄取了大约 2.7Tb 的 GCS 数据以及 Bigtable/Bq/等其他数据源,然后执行 CoGroupbyKey.create()。

GCS 数据采用原始字符串的形式,例如 userId, hashedPhoneNumber,例如:

525135a7-cb59-46ec-8d1d-0f12df02f486, 3070816492067005070

从 GCS 提取数据并使用 GroupbyKey 创建 KV 时,我有多个 DoFns

uuid -> Set<hashedphoneNumber>

我的问题更多是关于如何使管道更快?

  1. 现在我将它们都读取为字符串数据类型。将它们读取为 UUID 和 Long 有帮助吗?我在尝试进行测试时无法获得 UUID 编码器。
  2. 制作套装需要额外费用吗?一般来说,应该记住任何序列化/反序列化吗?我可以只连接所有 hashedPhoneNumber 并将其传递下去,而不是制作一个 Set 吗?作为开发人员,使用 Set 可以帮助我理解管道 i/p、o/p。
  3. 是否有任何其他方法可以使管道更快或关于如何使用这些类型的一般建议?

【问题讨论】:

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


【解决方案1】:

看看这个答案的编码器部分:

Apache Beam - What are the key concepts for writing efficient data processing pipelines I should be aware of?

还有其他一般提示和技巧。

【讨论】:

    猜你喜欢
    • 2018-02-07
    • 1970-01-01
    • 2018-07-20
    • 2019-06-04
    • 2018-12-27
    • 2019-09-16
    • 1970-01-01
    • 1970-01-01
    • 2021-05-20
    相关资源
    最近更新 更多