通过随机密钥完成作业的数据流异常和使用reshuflle的总CPU小时数

时间:2018-04-05 06:50:38

标签: google-cloud-dataflow

我创建了一个数据流,它从数据存储区获取输入并执行转换以将其转换为BigQuery TableRow。我正在为变换中的每个元素附加时间戳。然后将一天的窗口应用于PCollection。使用Apache Beam的BigQueryIO将窗口输出写入BigQuery表中的分区。

在写入BigQuery之前,它使用通过随机密钥重新洗牌作为避免融合的中间步骤。

管道行为是:

1. For 2.8 million entities in the input: 
Total vCPU time- 5.148 vCPU hr
Time to complete job- 53 min 9 sec
Current workers- 27 
Target workers- 27 
Job ID: 2018-04-04_04_20_34-1951473901769814139

2. For 7 million entites in the input: 
Total vCPU time- 247.772 vCPU hr
Time to complete the job- 3 hr 45 min
Current workers- 69 
Target workers- 1000
Job ID: 2018-04-02_21_59_47-8636729278179820259

我无法理解为什么花费这么多时间来完成第二种情况的工作和CPU小时。

高级别的数据流管道是:

-drawable-xhdpi
-drawable-xxhdpi
-drawable-xxxhdpi.

1 个答案:

答案 0 :(得分:0)

我看到您发布了类似的问题here,现在您已在代码中添加了以下步骤:

//Apply reshuffle with random key for avoiding fusion
...

正如有人在另一个问题中告诉过你的那样:

  

“OOM可能是热键的症状”

所以在这种情况下看起来它仍然发生类似的事情(你有关于热键问题的进一步信息here

如果是这种情况并且有一些工人被困,那么实体的数量与完成工作的时间不必遵循任何线性。而vCPU的消耗应该更多地是优化代码以避免热键问题。