python程序的Spark错误" java.lang.OutOfMemoryError:Java堆空间"

时间:2017-03-13 06:47:44

标签: java python apache-spark

我按照以下命令在spark上运行我的python kmeans程序:

./bin/spark-submit --master spark://master_ip:7077 my_kmeans.py

主要python kmeans计划如下所示:

sc = spark.sparkContext
# data
X = jl.load('X.jl.z')
data_x = sc.parallelize(X)
# kmeans
model = KMeans.train(data_x, 10000, maxIterations=5)

文件'X.jl.z'大小约为100M。

但是我得到了火花错误:

  File "/home/xxx/tmp/spark-2.0.2-bin-hadoop2.7/my_kmeans.py", line 24, in <module>
    data_x = sc.parallelize(X)
py4j.protocol.Py4JJavaError: An error occurred while calling    z:org.apache.spark.api.python.PythonRDD.readRDDFromFile.    
  : java.lang.OutOfMemoryError: Java heap space

我知道如何修改Java程序的JVM堆大小。但是如何增加python程序的堆大小?

1 个答案:

答案 0 :(得分:2)

尝试添加分区数:

data_x = sc.parallelize(X,n)
# n = 2-4 partitions for each CPU in your cluster

或:

  

可以使用spark.driver.memory设置最大堆大小设置   集群模式并通过--driver-memory命令行选项   客户端模式