Python 为什么spark总是在我的电脑上使用单核?

Python 为什么spark总是在我的电脑上使用单核?,python,linux,scala,bigdata,apache-spark,Python,Linux,Scala,Bigdata,Apache Spark,即使我给groupByKey函数提供了一个参数,例如groupByKey(4),当我用top命令检查时,spark仍然使用一个内核。我就这样运行我的脚本 spark-submit --master local[4] program.py 那么,当我告诉spark使用4时,为什么spark只使用一个内核呢?如果您的问题的标签是可信的,那么您是在Linux上运行的。在linux下,top默认情况下不会显示每个线程(它显示每个进程)本地[4]告诉spark在4个线程(而不是进程)上本地工作 运行to

即使我给
groupByKey
函数提供了一个参数,例如
groupByKey(4)
,当我用top命令检查时,spark仍然使用一个内核。我就这样运行我的脚本

spark-submit --master local[4] program.py

那么,当我告诉spark使用4时,为什么spark只使用一个内核呢?

如果您的问题的标签是可信的,那么您是在Linux上运行的。在linux下,top默认情况下不会显示每个线程(它显示每个进程)<代码>本地[4]告诉spark在4个线程(而不是进程)上本地工作


运行
top-H
来获取线程。

在我看来,有两种可能性a)spark有一个bug b)您的程序有一些地方阻止了并行性。第一个是不太可能的,因为你没有用任何不寻常的方式来称呼它。第二个是不可能的帮助,除非你张贴你的代码!另外,在groupByKey的文档中:“注意:默认情况下,输出中的并行度取决于父RDD的分区数。您可以传递可选的numTasks参数来设置不同数量的任务。”@Paul:我只使用mapPartitions,然后通过它调用groupByKey。我想你是对的,也许我只有一个分区。有没有函数可以将一个分区划分为多个分区?我不知道Spark的第一件事,但我知道如何搜索编程指南:“重新分区(numPartitions)”随机重新洗牌RDD中的数据,以创建更多或更少的分区,并在分区之间保持平衡。这始终会洗牌网络上的所有数据。“()