PySpark:线程“dagschedulereventloop”中出现异常java.lang.OutOfMemoryError:Java堆sp

2024-06-13 20:13:45 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图使用StringIndexerOneHotEncoder和{}将分类值转换为数值,以便在PySpark中应用K-means聚类。我的代码是:

indexers = [
    StringIndexer(inputCol=c, outputCol="{0}_indexed".format(c))
    for c in columnList
]

encoders = [OneHotEncoder(dropLast=False, inputCol=indexer.getOutputCol(),
                          outputCol="{0}_encoded".format(indexer.getOutputCol()))
            for indexer in indexers
            ]

assembler = VectorAssembler(inputCols=[encoder.getOutputCol() for encoder in encoders], outputCol="features")


pipeline = Pipeline(stages=indexers + encoders + [assembler])
model = pipeline.fit(df)
transformed = model.transform(df)

kmeans = KMeans().setK(2).setFeaturesCol("features").setPredictionCol("prediction")
kMeansPredictionModel = kmeans.fit(transformed)

predictionResult = kMeansPredictionModel.transform(transformed)
predictionResult.show(5)

我得到了Exception in thread "dag-scheduler-event-loop" java.lang.OutOfMemoryError: Java heap space。如何在代码中分配更多堆空间或更好?分配更多空间是否明智?我可以限制程序的可用线程数和堆空间吗?在


Tags: 代码informatfor空间transformedassemblerindexer