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

解决PySpark映射列警告:Spark 3.0后getItem传列方式已弃用

解决Spark 3.0+中getItem传列作为Key的弃用警告问题

修改方案

直接将map_expr.getItem(F.col('car'))替换为map_expr[F.col('car')]即可规避警告,修改后的完整代码如下:

from itertools import chain
import pyspark.sql.functions as F

data = [(1, 'BMW'),
  (2, 'Ford'),
  (3, 'honda'),
  (4, 'Cadillac'),
  (5, 'Fiat')]

df = spark.createDataFrame(data, ["ID", "car"])
data_dict = {'honda': 2.0, 'toyota': 2.9, 'BMW': 6, 'Dodge': 55, 'Ford': 99}
map_expr = F.create_map([F.lit(x) for x in chain(*data_dict.items())])
# 改用方括号索引语法替代getItem
df.withColumn('x', map_expr[F.col('car')]).display()

说明

警告提示明确指出,Spark 3.0开始不再支持用getItem接收列作为Key,官方推荐使用column[key]的索引语法。这种写法不仅符合Spark后续版本的规范,也更简洁直观。

对于不存在于映射字典中的值(比如示例中的Cadillac、Fiat),新列x会返回null,和原代码的行为完全一致。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.13 12:17:04