Scala& Spark:只使用一个CPU

时间:2017-02-16 16:52:16

标签: scala apache-spark

我发现了一段代码,极大地损害了以下程序的并行化(ML管道)。它的目的是"数字化"一列,例如转换一个列" int"值为Array(0,1,2,0,3)的{​​{1}}。

导致问题的(可怕的)代码是

Array(0,1,1,0,1)

CPU utilazation during training

显然,实现这一目标的更好的代码是

dfBin = df
   .filter(df("int") > 0)
   .withColumn("int",org.apache.spark.sql.functions.lit(1)
   .union(df.filter(df("int") === 0))

CPU utilazation during training

问题:为什么第一个片段会阻止Spark并行化,以及如何在未来更快地识别出这些有害的代码片段?

0 个答案:

没有答案