Mapreduce 如何使数据流apache beam作业更快

Mapreduce 如何使数据流apache beam作业更快,mapreduce,google-cloud-dataflow,apache-beam,Mapreduce,Google Cloud Dataflow,Apache Beam,我有一个apache beam工作,大约需要6个多小时才能完成。我们接收大约2.7Tb的地面军事系统数据以及其他数据源,如Bigtable/Bq/etc,然后执行CoGroupbyKey.create() GCS数据以原始字符串的形式出现,如userId、hashedPhoneNumber,例如: 525135a7-cb59-46ec-8d1d-0f12df02f486, 3070816492067005070 当从地面军事系统获取数据并使用GroupbyKey创建数据时,我有多个DOFN u

我有一个apache beam工作,大约需要6个多小时才能完成。我们接收大约2.7Tb的地面军事系统数据以及其他数据源,如Bigtable/Bq/etc,然后执行CoGroupbyKey.create()

GCS数据以原始字符串的形式出现,如
userId、hashedPhoneNumber
,例如:

525135a7-cb59-46ec-8d1d-0f12df02f486, 3070816492067005070
当从地面军事系统获取数据并使用GroupbyKey创建数据时,我有多个DOFN

uuid -> Set<hashedphoneNumber>
uuid->Set
我的问题更多的是关于如何使管道更快

  • 现在我把它们都理解为字符串数据类型。把它们读成UUID和Long会有帮助吗?当我试着做测试时,我没能找到UUID编码器
  • 制作一套需要额外费用吗?一般来说,应该记住任何序列化/反序列化吗?我能不能把所有的hashedPhoneNumber合并并传递下来,而不是做一个集合?使用Set有助于我作为开发人员理解管道i/p、o/p
  • 有没有其他方法可以加快管道的运行速度,或者提供关于如何使用这些类型的一般建议

  • 请查看此答案的编码部分:


    还有其他的一般技巧和窍门。

    我建议你检查一下,也要加快你的流水线,你可以使用这个或被调用的特性,考虑这可能产生的费用是很重要的。流水线的成本将取决于(VCPU,内存和存储:持久磁盘)。如果Set消耗更多内存或vCPU,这可能会影响管道的最终价格。您可以验证数据流定价是如何工作的。