我有类似于如下代码:Spark MLLib的LassoWithSGD不能缩放?
val fileContent = sc.textFile("file:///myfile")
val dataset = fileContent.map(row => {
val explodedRow = row.split(",").map(s => s.toDouble)
new LabeledPoint(explodedRow(13), Vectors.dense(
Array(explodedRow(10), explodedRow(11), explodedRow(12))
))})
val algo = new LassoWithSGD().setIntercept(true)
val lambda = 0.0
algo.optimizer.setRegParam(lambda)
algo.optimizer.setNumIterations(100)
algo.optimizer.setStepSize(1.0)
val model = algo.run(dataset)
我我的虚拟服务器上的20个内核上运行这个在云中。该文件是具有几百万行的“本地”(即不在HDFS中)文件。我以本地模式运行它,用sbt运行(即我不使用集群,我不使用spark-submit)。
当我将spark.master = local [*]设置从local [8]增加到local [40]时,我预料到这会变得越来越快。相反,无论我使用什么设置,它都需要相同的时间量(但我从Spark UI注意到,我的执行程序在任何给定时间都有最大数量的活动任务,等于预期的数量,即本地〜8 [8],对于本地[40]〜40等等 - 因此似乎并行化起作用)。
默认的分区数我的数据集RDD是4。我试图迫使分区数到20,没有成功 - 事实上,它减缓了套索算法下来,甚至更多...
是我的期望的缩放过程不正确?有人可以帮我解决这个问题吗?