У меня есть неприятная проблема с использованием ноутбука jupyter с искровым.Как распределить классы с PySpark и Jupyter
мне нужно определить пользовательский класс внутри ноутбука и использовать его для выполнения некоторых операций на карте
from pyspark import SparkContext
from pyspark import SparkConf
from pyspark import SQLContext
conf = SparkConf().setMaster("spark://192.168.10.11:7077")\
.setAppName("app_jupyter/")\
.set("spark.cores.max", "10")
sc = SparkContext(conf=conf)
data = [1, 2, 3, 4, 5]
distData = sc.parallelize(data)
class demo(object):
def __init__(self, value):
self.test = value + 10
pass
distData.map(lambda x : demo(x)).collect()
Это дает следующее сообщение об ошибке:
PicklingError: Can't pickle : attribute lookup main.demo failed
Я знаю, что эта ошибка о, но я could't выяснить решение ..
Я попытался:
- Определите файл python demo.py за пределами ноутбука. Это работает, но это такое уродливое решение ...
- Создать динамический модуль like this, а затем импортировать его потом ... Это дает ту же ошибку,
Что бы решение? ... Я хочу, чтобы все работало в том же ноутбуке
можно изменить что-то в:
- путь искры работает, возможно, некоторые конфигурации рассол
- Что-то в коде ... Используйте некоторый подход к статическому магии