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

Spark SQL执行报错EOL while scanning string literal 语法问题求助

错误原因定位

该EOL while scanning string literal语法错误属于Python语法规则触发的报错,和你写的Spark SQL本身逻辑无关:
Python中普通双引号"包裹的字符串不支持直接跨行书写,你将多行SQL语句用单个双引号包裹,Python解析到第一行字符串结尾的换行符时,还未扫描到匹配的闭合双引号,就会抛出该类行尾扫描错误。

解决方法

推荐优先使用第一种方案,改动最小且易维护:

  • 方案1:将包裹SQL的单个双引号替换为三重双引号""",无需调整原有SQL的换行格式即可正常识别多行字符串:
results = spark.sql(
                    """
                        select b.* 
                        from ( 
                                select a.*, dense_rank() over (partition by nm order by total 
                                desc) as rnk
                                from (
                                        select dt, code, nm, sum(num) as total
                                        from cases
                                        group by dt, code, nm   
                                    )a
                            )b
                                where b.rnk = 1
                                order by total desc, dt
                    """
)
  • 方案2:保留单个双引号的前提下,在每一行SQL字符串的末尾添加反斜杠\转义换行符,该方案容易漏加转义符,不推荐使用:
results = spark.sql(
                    " \
                        select b.* \
                        from ( \
                                select a.*, dense_rank() over (partition by nm order by total \
                                desc) as rnk \
                                from ( \
                                        select dt, code, nm, sum(num) as total \
                                        from cases \
                                        group by dt, code, nm   \
                                    )a \
                            )b \
                                where b.rnk = 1 \
                                order by total desc, dt \
                    "
)

修改完成后可先打印字符串验证SQL内容是否完整,确认无误后再执行查询即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 10:45:04