PySpark застревает, когда действия в rdd вызываются из импортированного модуля

#python #apache-spark #pyspark #jupyter-notebook

Вопрос:

Я запускаю PySpark на ноутбуке Jupyter (на AWS EMR) и сталкиваюсь с какой-то странной ситуацией.

У меня была прекрасно работающая записная книжка, которая выполняла некоторые манипуляции с rdds, но я решил реорганизовать код в модули python, чтобы сделать его более читабельным. Я добавляю модули с помощью «sc.addPyFile(«myCodePackage.zip»)» команда.

После реорганизации части кода я столкнулся с проблемой — все действия, выполняемые на rdds из импортированных файлов, приводят к зависанию PySpark — это происходит для каждого действия, выполняемого из какой-либо импортированной функции (из определенного модуля python). Когда я извлекаю объявление функции в какую-либо ячейку в записной книжке (ничего не меняя в коде функции) и вызываю ее, она работает нормально.

Пример такой функции —

 import gzip
import json

def parse_items_from_compressed_json(json_str):
    items = json.loads(gzip.decompress(json_str))
    return items

def example(gzip_path):
    return sc.binaryFiles(gzip_path).flatMap(lambda x:     
    parse_items_from_compressed_json(x[1]))
 

Когда этот код находится в ячейке в записной книжке — он работает идеально!

При вызове его из импортированного файла он зависает..

Спасибо за любую помощь.