仅在循环时使用pyspark耗尽内存

时间:2015-11-20 03:47:33

标签: apache-spark pyspark

我正在运行一个处理某些日志文件的本地spark作业。由于每个月的日志需要单独处理,我会进行多次处理。只需一次处理一个月,一切都很顺利。即使是3-4循环也能完成。但除此之外我还会出现内存错误:

OpenJDK 64-Bit Server VM warning: INFO: os::commit_memory(0x00007f4e506c7000, 12288, 0) failed; error='Cannot allocate memory' (errno=12)
#
# There is insufficient memory for the Java Runtime Environment to continue.
# Native memory allocation (malloc) failed to allocate OpenJDK 64-Bit Server VM warning: INFO: os::commit_memory(0x00007f4e29ee7000, 12288, 0) failed; error='Cannot allocate memory' (errno=12)
12288 bytes for committing reserved memory.
./runspark.sh: line 1:  6222 Aborted                 (core dumped)

我正在执行这项工作:

spark-submit --driver-memory=12g run.py

run.py类似于:

from pyspark import SparkConf, SparkContext

def do(sc, i):
    rdd = sc.binaryFiles("cache/{}".format(i))
    rdd1 = rdd.filter(...).map(...)
    rdd2 = rdd.filter(...).map(...)
    rdd1.persist()
    rdd2.persist()
    ...
    <processing>
    ...
    rdd1.unpersist()
    rdd2.unpersist()

if __name__ == "__main__":
    conf = SparkConf.setMaster("local[*]")
    sc = SparkContext(conf)
    for i in range(12):
        do(sc, i)

关注火花webUI我没有看到任何占用存储选项卡上的内存(比一个循环更长)。但是看htop内存使用量不断增长。考虑到我没有使用可能占用内存的RDD,我对于占用所有内存的东西感到茫然。运行spark-1.5.2。

0 个答案:

没有答案