Spark线性回归java.lang.StackOverflowError

时间:2019-04-18 22:23:21

标签: scala apache-spark stack-overflow linear-regression

我们有一个具有2048个功能(Resnet50嵌入)的大型数据集,可用于Spark上的线性回归,并且不断获取StackOverflowError。我在Zeppelin上玩过各种-Xss设置,发现它只能工作几次,并且在大多数情况下会因StackOverflowError失败。这是我正在使用的scala代码,“ featureColumns”是具有所有2048列名称的数组。

import org.apache.spark.ml.Pipeline
import org.apache.spark.ml.feature.VectorIndexer
import org.apache.spark.ml.feature.VectorAssembler
import org.apache.spark.ml.linalg.Vectors
import org.apache.spark.ml.regression.LinearRegression

val label="target_column"

val inputData = spark.read.parquet("/path/to/file")
val Array(train, test) = inputData.randomSplit(Array(0.7, 0.3))

val assembler = new VectorAssembler()
                  .setInputCols(featureColumns)
                  .setOutputCol("features")

val featurePanel = assembler.transform(train)

val lr = new LinearRegression()
.setMaxIter(10)
.setRegParam(0.0)
.setElasticNetParam(0.0)
.setLabelCol(label)
.setFeaturesCol("features") 

val featureGroup = featurePanel.select(label, "features")

//featureGroup.count()

val lrModel = lr.fit(featureGroup)

“ lr.fit”的上述代码失败(“ featureGroup.count()”步骤也失败),并出现stackoverflow错误。

this question中,我尝试将齐柏林飞艇设置更改为其他设置,它一次成功地在“ 16g”处成功,一次成功地在“ 16m”处成功,但是由于Stackoverflow错误而再次失败。

spark.executor.extraJavaOptions=-Xss16m
spark.driver.extraJavaOptions=-Xss16m

我不确定是否有更好的方法来调试stackoverflow错误并找到最佳配置/代码更改。相同的代码适用于100-200列。

0 个答案:

没有答案