pySpark在运行特定代码时停止使用所有内核

时间:2018-07-26 22:06:38

标签: apache-spark pyspark apache-spark-sql pyspark-sql

我在具有16GB Ram和4核心CPU的本地计算机上运行PySpark。我还使用Jupyter笔记本来编写和运行所有代码。

我的spark上下文配置如下:

>sc = pyspark.SparkContext('local[*]',appName="demo")

我主要从事Spark DataFrames的工作,从一个月以来一直从事任务,我的所有代码始终使用所有4个内核,并且代码运行速度更快,但是现在当我向其中添加新代码时我之前的代码,在执行这些代码行以及之后的任何代码时,都停止使用我的所有内核。

我添加了这个循环:

columnsToJoin = ["PitchingStrikeoutsPerNineInnings","PitchingEarnedRuns","PitchingWeightedOnBasePercentage","WalksHitsPerInningsPitched","PitchingCompleteGames","PitchingNoHitters","InningsPitchedDecimal","PitchingBattingAverageAgainst","PitchingShutOuts"]

for clms in columnsToJoin:
    temp = pitcherInfo.groupBy("PitcherID","Year").agg(F.mean(clms))
    temp=temp.select("PitcherID","Year",col("avg("+clms+")").alias(clms+"Avg"))
pitcherInfo=pitcherInfo.join(temp,[pitcherInfo.PitcherID==temp.PitcherID,pitcherInfo.Year==temp.Year]).drop(temp.PitcherID).drop(temp.Year)
print("Done",clms)

我认为这是有可能的,因为我使用的是纯python循环,并尝试了没有循环的相同操作,但仍然执行相同操作。

这段代码中的所有内容都利用了我的所有内核,但是一旦执行了该循环,它就开始使用单个内核,然后再也没有回到使用所有内核的状态。

有人遇到过类似的问题吗?我该怎么做才能使spark充分利用所有内核?

0 个答案:

没有答案
相关问题