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

如何解决Spark SQL报mismatched input 'line' expecting <EOF>错误

错误原因

报错的核心是嵌套CASE WHEN语法结构不完整:原SQL共声明了3层CASE,仅配套了2个END闭合标记,同时最外层CASE的ELSE分支位置放置错误,导致Spark SQL解析器无法识别完整的查询结构,提前判定语句应该结束(即<EOF>标记),因此抛出字段匹配错误。

修正后可运行的SQL

你原本的业务逻辑是:仅当line值为KEY时才处理pop字段,符合规则则提取@前的数字段,其余场景返回空值,修正后的完整语法如下:

select 
  case 
    when line = 'KEY' 
      then case 
        when length(pop)>0 and pop not rlike '^[0-9]+@.*' then '' 
        when pop rlike '^[0-9]+@.*' then regexp_extract(pop, '^[^@]+', 0)
        else '' 
      end
    else '' 
  end as pop 
from input

简化优化建议

你可以合并判断条件减少嵌套层级,提升代码可读性,最终实现效果和原逻辑完全一致:

select 
  case 
    when line = 'KEY' and pop rlike '^[0-9]+@.*' then regexp_extract(pop, '^[^@]+', 0)
    else '' 
  end as pop 
from input

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 15:06:03