Объект SparkSession не имеет атрибута serializer при оценке классификатора в Pyspark. - PullRequest
0 голосов
/ 14 февраля 2019

Я использую Apache spark в пакетном режиме.Я настроил весь конвейер, который преобразует текст в векторы TFIDF, а затем предсказывает логический класс с помощью Логистической регрессии:

# Chain previously created feature transformers, indexers and regression in a Pipeline
pipeline = Pipeline(stages=[tokenizer, hashingTF, idf, 
                        labelIndexer, featureIndexer, lr])
#Fit the full model to the training data
model = pipeline.fit(trainingData)

#Predict test data 
predictions = model.transform(testData)

Я могу исследовать predictions, который является искровым фреймом данных, и это то, что яожидайте, что это будет.Далее я хочу увидеть матрицу путаницы, поэтому я конвертирую оценки и метки в RDD и передаю их в BinaryClassificationMetrics ():

predictionAndLabels = predictions.select('prediction','label').rdd

Наконец, я передаю это в BinaryClassificationMetrics:

metrics = BinaryClassificationMetrics(predictionAndLabels) #this errors out

Вот ошибка:

AttributeError: 'SparkSession' object has no attribute 'serializer'

Эта ошибка бесполезна, и ее поиск вызывает широкий спектр проблем.единственное, что мне показалось похожим, это сообщение, в котором нет ответов: Как устранить ошибку "AttributeError: у объекта 'SparkSession' нет атрибута 'serializer'?

Любая помощьценится!

1 Ответ

0 голосов
/ 18 февраля 2019

Ради процветания, вот что я сделал, чтобы это исправить.Когда я запускал сеанс Spark и контекст SQL, я делал это, что неправильно:

sc = SparkSession.builder.appName('App Name').master("local[*]").getOrCreate()
sqlContext = SQLContext(sc)

Эта проблема была решена путем выполнения этого вместо:

sc = SparkSession.builder.appName('App Name').master("local[*]").getOrCreate()
sqlContext = SQLContext(sparkContext=sc.sparkContext, sparkSession=sc)

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

...