You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PySpark已用SparkSession.getOrCreate仍报弃用警告如何解决

问题原因

警告并非来自SparkSession.builder.getOrCreate()的调用,真正的触发点是你代码中手动实例化SQLContext的语句:

sqlContext = SQLContext(scSpark)

Spark 3.0.0版本开始,SQLContext本身已被标记为弃用,其全部能力已经整合到SparkSession实例中,初始化SQLContext时就会抛出你看到的FutureWarning。而且通读现有代码会发现,你定义的sqlContext变量从头到尾没有被调用过,属于完全多余的代码。

修改方案
  • 直接删除sqlContext = SQLContext(scSpark)这行冗余代码即可消除警告。
  • 后续所有Spark SQL相关操作,直接使用你已经创建好的SparkSession实例scSpark调用即可,你现有代码中scSpark.read.csv、scSpark.createDataFrame、scSpark.sql的写法本身就是符合Spark 3.x规范的,不需要额外调整。
  • 你原代码最后一行多写了一个右括号,运行时会触发语法错误,修改时记得一并删除。

修改后的可运行代码如下:

scSpark = SparkSession.builder.config("spark.driver.extraClassPath", "./mysql-connector-java-8.0.29.jar").getOrCreate()

jdbc_url = "jdbc:mysql://{0}:{1}/{2}".format(hostname, jdbcPort, dbname)
connectionProperties = {
    "user": username,
    "password": password
}
#df=scSpark.read.jdbc(url=jdbc_url, table='bms_title', properties= connectionProperties)
#df.show()


df = scSpark.read.csv(data_file, header=True, sep=",", encoding='UTF-8').cache()
df2 = df.first()

df = df.exceptAll(scSpark.createDataFrame([df2]))

df.createTempView("books")

# 移除了末尾多余的右括号
output = scSpark.sql('SELECT `Postgraduate Course` AS Postgraduate_Course FROM books')

内容的提问来源于stack exchange,提问作者pyspark

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.30 21:57:23