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

Spark SQL执行报mismatched input 'from' expecting <EOF>错误咨询

报错含义解释

这是Spark SQL的语法解析错误,指SQL语句解析到第19行第14个字符位置时,解析器遇到了from关键字,但此时解析器判定前面的语句应该已经结束、期待遇到结束符,因此抛出语法不匹配异常。

错误点定位

问题出在WHERE条件的BETWEEN用法上,现有写法不符合Spark SQL规范:

  • BETWEEN关键字后不需要加括号包裹取值范围
  • BETWEEN的上下界需要用AND连接,不能用逗号分隔

你现有代码的WHERE子句存在语法错误,导致SQL解析提前中断,遇到后续的from关键字就抛出了匹配异常:

where t1.dt_mvtc between({data_inicial} , {data_final})

修正方案

把WHERE条件改为正确的BETWEEN写法即可:

where t1.dt_mvtc between {data_inicial} and {data_final}

如果data_inicial、data_final是字符串类型的日期值,还需要给变量加上单引号包裹,避免语法错误:

where t1.dt_mvtc between '{data_inicial}' and '{data_final}'

修正后的完整代码如下:

%%spark

spark.sql(f'''select t2.ANOT_PDA_PRD
         ,t2.VLR_PDA_PRD AS MAX_VLR_PDA
         ,(CASE t1.cd_gr_mdld_prd_pd
                WHEN 7 THEN t3.DEF_B4
                WHEN 8 THEN t3.DEF_B4
                WHEN 9 THEN t3.DEF_B4
                WHEN 10 THEN t3.DEF_B5
                WHEN 11 THEN t3.DEF_B4
                WHEN 12 THEN t3.DEF_B5
                WHEN 13 THEN t3.DEF_B4
                WHEN 14 THEN t3.DEF_B4
                WHEN 15 THEN t3.DEF_B5
                WHEN 16 THEN t3.DEF_B4
                WHEN 17 THEN t3.DEF_B4
                WHEN 18 THEN t3.DEF_B4
                WHEN 22 THEN t3.DEF_B5
                ELSE 0 END) AS TMP_QUALI
          ,T3.ANOT_PDA_CLI
          from temp_vars_qlt as t1
          left join temp_vars_qlt as t2
          on t1.dt_mvtc = t2.dt_mvtc and t1.cd_cli = t2.cd_cli and T1.cd_gr_mdld_prd_pd=t2.cd_gr_mdld_prd_pd
          left join temp_vars_qlt as t3
          on t1.dt_mvtc = t3.dt_mvtc and t1.cd_cli = t3.cd_cli
          where t1.dt_mvtc between {data_inicial} and {data_final}
          ''').createOrReplaceTempView("temp_safras_qlt_aux")

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 23:36:02