Задание Pyspark не освобождает память после выполнения на главном компьютере при обработке больших zip-файлов в чанках - PullRequest
0 голосов
/ 06 апреля 2019

Я читаю большой zip-файл через pyspark, читаю его порциями и обрабатываю содержимое порциями. Постобработка содержимого при использовании основной памяти не снижается.

    spark = SparkSession.builder().getOrCreate()
    buffer = io.BytesIO(<zip file from s3>)
    z = zipfile.ZipFile(buffer)
    with z.open(z.infolist()[0]) as f:
                line_counter=0
                for line in f:
                    # Append file contents to list
                    data.append(line)
                    line_counter=line_counter+1
                    # Reset counters if record count hit max-data-length threshold
                    # Create spark dataframes
                    if not line_counter % 100000:

                        main(spark, data)

    Initial memory usage on master:
                 total       used       free     shared    buffers     cached
    Mem:        127802      20115     107687          0        118      10424
    -/+ buffers/cache:       9571     118230
    Swap:            0          0          0

    Memory usage after few runs:
# free -m
                 total       used       free     shared    buffers     cached
    Mem:        127802      65449      62353          0        119      10491
    -/+ buffers/cache:      54838      72963
    Swap:            0          0          0
#

                 total       used       free     shared    buffers     cached
    Mem:        127802      92898      34904          0        119      10501
    -/+ buffers/cache:      82276      45526
    Swap:            0          0          0

Я ожидаю, что использование памяти будет исходным, после одного цикла обработки, но этого не происходит, из-за чего после некоторого итерационного кластера возникает исключение памяти.

...