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

Spark Scala中transform表达式触发'>'意外输入ParseException

Spark SQL transform函数语法错误修复

问题背景

执行Spark DataFrame聚合后使用transform函数生成indicator列时,报错提示->操作符中的'>'为意外输入,使用环境为Scala 2.11.8、Spark 3.1.2(注:推测原版本号3.17.2为笔误)。

报错原因

Spark 3.x早期版本的SQL解析器对transform函数的lambda表达式语法要求更严格,直接使用x -> ...的写法会导致解析器无法正确识别箭头符号,引发语法错误。

修复方案

方案1:给lambda参数添加括号

通过给lambda的参数部分加上括号,明确语法边界,让解析器正确识别箭头表达式:

val transformExpr = "transform(array, (x) -> array_contains(x, 'CIBASE') and array_contains(x, 'ACTIVE'))"

方案2:使用CASE表达式显式定义逻辑

如果方案1仍存在兼容问题,可以改用CASE WHEN语法替代箭头表达式,写法更兼容:

val transformExpr = "transform(array, x -> CASE WHEN array_contains(x, 'CIBASE') AND array_contains(x, 'ACTIVE') THEN true ELSE false END)"

效果说明

修改后,indicator列会生成一个布尔数组,其中每个元素对应原array列中的子数组是否同时包含'CIBASE'(来自InstalledOffer_applicationSource)和'ACTIVE'(来自InstalledOffer_standardStatus)。

内容的提问来源于stack exchange,提问作者mr.Penguin

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 21:09:29