【问题标题】:PySpark: Exception in thread "dag-scheduler-event-loop" java.lang.OutOfMemoryError: Java heap spacePySpark:线程“dag-scheduler-event-loop”java.lang.OutOfMemoryError 中的异常:Java 堆空间
【发布时间】:2018-08-13 06:54:08
【问题描述】:

我正在尝试使用 StringIndexerOneHotEncoderVectorAssembler 将分类值转换为数值,以便在 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。如何在代码中分配更多或更好的堆空间?分配更多空间是否明智?我可以将我的程序限制为可用线程数和堆空间吗?

【问题讨论】:

    标签: python pyspark k-means


    【解决方案1】:

    我遇到了同样的问题。帮助用户增加允许的进程数量。例如运行:

    ulimit -u 4096
    

    【讨论】:

      猜你喜欢
      • 2016-07-29
      • 2018-03-27
      • 2017-06-12
      • 2011-01-23
      • 2012-07-02
      • 1970-01-01
      • 1970-01-01
      • 2023-03-13
      相关资源
      最近更新 更多