有没有办法修改下面的sparkpython代码以更好地使用内存。

2024-10-06 14:32:06 发布

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

我正在尝试运行以下代码。它给我一个GC错误。我试着在没有reduceByKey的情况下运行这个程序,代码运行正常。我猜reduce函数占用了很多内存。我试着增加驱动程序内存,内核数量,执行器内存。我还尝试了groupByKey而不是reduceByKey。但运气不好

但我所理解的是,我没有释放变量是做错了什么。有人能帮我吗

        import os
        import sys
        import unicodedata
        from operator import add 

        try:
            from pyspark import SparkConf
            from pyspark import SparkContext
        except ImportError as e:
            print ("Error importing Spark Modules", e)
            sys.exit(1)


        # delimeter function
        def findDelimiter(text):
            sD = text[1] 
            eD = text[2] 
            return (eD, sD) 

        def tokenize(text):
            sD = findDelimiter(text)[1]
            eD = findDelimiter(text)[0]
            arrText = text.split(sD)
            text = ""
            seg = arrText[0].split(eD)
            arrText=""
            senderID = seg[6].strip()
            yield (senderID, 1)


        conf = SparkConf()
        sc = SparkContext(conf=conf)

        textfile = sc.textFile("hdfs://my_IP:9000/data/*/*.txt")

        rdd = textfile.flatMap(tokenize)
        rdd = rdd.reduceByKey(lambda a,b: a+b)
        textfile=""
  rdd.coalesce(1).saveAsTextFile("hdfs://my_IP:9000/data/total_result503")
    rdd=""

Tags: 内存textfromimportconfsyssdpyspark