Apache spark 使用GD运行LinearRegression时火花未利用所有芯

Apache spark 使用GD运行LinearRegression时火花未利用所有芯,apache-spark,apache-spark-mllib,Apache Spark,Apache Spark Mllib,我在本地机器上运行Spark(16G,8个cpu核)。我试图在300MB大小的数据集上训练线性回归模型。我检查了cpu统计数据和正在运行的程序,它只执行一个线程。 文件说他们已经实现了SGD的分布式版本。 我认为您要做的是显式地声明要与本地上下文一起使用的核心数。从注释中可以看到,“local”(这就是您正在做的)在一个线程上实例化上下文,而“local[4]”将使用4个核心运行。我相信您也可以使用“local[*]”在系统的所有内核上运行 我认为您要做的是明确说明要与本地上下文一起使用的核心

我在本地机器上运行Spark(16G,8个cpu核)。我试图在300MB大小的数据集上训练线性回归模型。我检查了cpu统计数据和正在运行的程序,它只执行一个线程。 文件说他们已经实现了SGD的分布式版本。


我认为您要做的是显式地声明要与本地上下文一起使用的核心数。从注释中可以看到,
“local”
(这就是您正在做的)在一个线程上实例化上下文,而
“local[4]”
将使用4个核心运行。我相信您也可以使用
“local[*]”
在系统的所有内核上运行

我认为您要做的是明确说明要与本地上下文一起使用的核心数量。从注释中可以看到,
“local”
(这就是您正在做的)在一个线程上实例化上下文,而
“local[4]”
将使用4个核心运行。我相信您也可以使用
“local[*]”
在系统的所有内核上运行

你是如何提交脚本的?@eliashah我在使用pyspark submit--master local[*]script\u name.py你是如何提交脚本的?@eliashah我在使用pyspark submit--master local[*]script\u name.py谢谢你的回答,我没有检查线程,而是在监视让我困惑的进程。谢谢你的回答,我不是在检查线程,而是在监视进程,这让我感到困惑。
from pyspark.mllib.regression import LabeledPoint, LinearRegressionWithSGD, LinearRegressionModel
from pyspark import SparkContext


def parsePoint(line):
  values = [float(x) for x in line.replace(',', ' ').split(' ')]
  return LabeledPoint(values[0], values[1:])

sc = SparkContext("local", "Linear Reg Simple")
data = sc.textFile("/home/guptap/Dropbox/spark_opt/test.txt")
data.cache()
parsedData = data.map(parsePoint)


model = LinearRegressionWithSGD.train(parsedData)

valuesAndPreds = parsedData.map(lambda p: (p.label,model.predict(p.features)))
MSE = valuesAndPreds.map(lambda (v, p): (v - p)**2).reduce(lambda x, y: x + y) / valuesAndPreds.count()
print("Mean Squared Error = " + str(MSE))


model.save(sc, "myModelPath")
sameModel = LinearRegressionModel.load(sc, "myModelPath")