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

PySpark中如何将Python变量传入Spark命令?

解决PySpark中Python变量传入条件判断的问题

直接用lit()把Python变量转换成Spark可识别的字面量就行,你的代码主要有两个问题:

  • 直接写CurrentYear时,Spark会把它当成列名而非变量值
  • otherwise里的Lit写错了,PySpark里对应的函数是小写的lit()

正确写法示例:

from pyspark.sql.functions import col, when, lit

CurrentYear = '2022'
df = df.withColumn(
    'IsCurrentYear',
    when(col('ColumnName') == lit(CurrentYear), lit('Y')).otherwise(lit('n'))
)

如果你的ColumnName是数值类型(比如整数格式的年份),只要把CurrentYear定义成整数2022,再传入lit()即可,不需要加引号。

另外你之前尝试的lit('{CurrentYear}')没生效,是因为单引号包裹的内容不会触发Python变量解析,就算改成lit(f'{CurrentYear}')能运行,但直接把变量传给lit()的写法更简洁。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.15 01:46:07