在IBM Cloud Pak的Jupyter中使用PySpark遇弃用警告求助
解决PySpark中SQLContext弃用警告的修改方案
问题原因
PySpark 3.0及以上版本中,SQLContext(sc)的初始化方式已被废弃,官方推荐使用SparkSession统一管理Spark上下文环境,它整合了原SparkContext和SQLContext的全部功能。
修改步骤
- 替换导入语句:移除
SparkContext和SQLContext的导入,添加SparkSession的导入。 - 创建SparkSession实例:用
SparkSession.builder.getOrCreate()替代手动创建sc和sqlContext的逻辑,该方法会自动复用已存在的会话或创建新会话。 - 调整上下文引用:后续需要SparkContext时,通过
spark.sparkContext获取;SQL相关操作直接使用spark实例即可。
修改后的完整代码
from pyspark.ml import Pipeline from pyspark.ml.classification import LogisticRegression from pyspark.ml.feature import HashingTF, Tokenizer from pyspark.sql import Row, SparkSession # 替换SQLContext为SparkSession import os import sys from pyspark.sql.types import * from pyspark.mllib.classification import LogisticRegressionWithSGD from pyspark.mllib.regression import LabeledPoint from numpy import array from pyspark.ml.evaluation import MulticlassClassificationEvaluator # Library for confusion matrix, precision, test error from pyspark.mllib.evaluation import MulticlassMetrics # Library For Area under ROC curve and Area under precision-recall curve from pyspark.mllib.evaluation import BinaryClassificationMetrics # 创建SparkSession实例,替代原有的sc和sqlContext初始化 spark = SparkSession.builder.getOrCreate() # 若需要使用SparkContext,可通过以下方式获取 # sc = spark.sparkContext # packages for data analysis import numpy as np import pandas as pd
额外说明
- 原代码中重复导入了
SQLContext,修改时一并移除冗余导入。 - 后续代码中如果有依赖
sqlContext的操作,直接替换为spark即可,例如原sqlContext.read.csv(...)改为spark.read.csv(...)。
内容的提问来源于stack exchange,提问作者Canthiano Prosky
相关产品推荐
相关产品推荐

