说一说使用Spark SQL查询数据报错该如何解决

FAILED: ParseException line 2:44 mismatched input ‘<EOF>‘ expecting ( near ‘AS‘ in statement 报错理由千奇百怪,其实不是(有什么问题,是注释里有分号;sql里面千万不要用分号 WITH invinfo AS --sku信息,三级部门+三级品类+品牌+band+采销员+名称;时点库存水位和28天出库销量 ( SELECT sku_id, bu_name, dept_name_1, dept_name_2, dept_name_3, saler_name, pur_name, pur_control_name, item_first_ca 阅读详情
AI摘要

本文详细介绍了使用Spark SQL进行数据查询时遇到的常见错误及解决方法,包括列不存在、语法错误、分组函数使用不当、未定义函数等问题,并提供了定位和修复错误的关键信息。

更多文章,可关注微信公众号:excelwork

    今天介绍的是在使用Spark SQL查询数据遇到的一些常见报错案例,为什么要说这个呢,因为,有些错误,网上搜索得到答案时间太长了。

如何快速定位问题?

  Exception:不啦不啦的一大堆~,熟悉不!?我们只要看Exception冒号后面说的那一句提示就好了,里面会有什么错了、错在哪了的信息。

会有哪些报错信息?

1/8

报错信息:

java.sql.SQLException: org.apache.spark.sql.AnalysisException: cannot resolve '`a`' given input columns:

关键信息:

cannot resolve '`a`' 

    无法解析a,说明a不存在,这时就去看具体报错位置,列a在SQL里被改了名字,还是压根不存在。

2/8

报错信息:

java.sql.SQLException: org.apache.spark.sql.catalyst.parser.ParseException: mismatched input '1' expecting <EOF>(line 1, pos 9)

关键信息:

mismatched input '1' 

    这种报错问题比较不好找,但问题往往很简单,无非就是书写问题:比如字段名中间不小心插入了空格、符号、数字等。

3/8

报错信息:

java.sql.SQLException: org.apache.spark.sql.AnalysisException: expression 'aa.`qualityscoreentforprofile`' is neither present in the group by, nor is it an aggregate function. Add to group by or wrap in first() (or first_value) if you don't care which value you get.;;

关键信息:

is neither present in the group by, nor is it an aggregate function

    有分组函数,但是承担分组作用的字段select后面和group by后面不一致,比如前面有5个字段,后面只有4个字段分组,或者此处应为字段类型,而你输入了字符串等等。

4/8

报错信息:

java.sql.SQLException: org.apache.spark.sql.AnalysisException: Undefined function: 'cout'. This function is neither a registered temporary function nor a permanent function registered in the database 'default'.; line 1 pos 7

关键信息:

Undefined function: 'cout'. 

    没被声明的函数,此例是count函数没写全,其他情况还有使用自建函数的,但是没调用成功,也会报这个错。

5/8

报错信息:

java.sql.SQLException: org.apache.spark.sql.catalyst.parser.ParseException: 

mismatched input 'from' expecting <EOF>(line 2, pos 0)

关键信息:

mismatched input 'from' 

    与第2个例子很像,还是SQL的基本执行过程中,出现了不往下走的情况,这时可以做的:比如检查SQL语法问题啦,看看SQL语句某句是不是没写完啊。

6/8

 

报错信息:

java.sql.SQLException: org.apache.spark.sql.catalyst.parser.ParseException: 

extraneous input 'dt' expecting <EOF>(line 3, pos 7)

关键信息:

extraneous input

    从报错位置,我们去看“dt”跟什么没有关联,这里可能是很多字段中,有的字段没写逗号,函数group by组合忘记写by诸如此类。

7/8

报错信息:

java.sql.SQLException: org.apache.spark.sql.catalyst.parser.ParseException: 

Literals of type 'DT' are currently not supported.(line 3, pos 9)

关键信息:

Literals of type 'DT' are currently not supported

    “dt”这个类型不支持,需要将结合出现报错位置具体语境去看,是类型确实不支持、敲错了符号、还是在字段名上多把无关字符也敲上了。

8/8

 

报错信息:

java.sql.SQLException: org.apache.spark.sql.AnalysisException: Reference 'dt' is ambiguous, could be: z.dt, a.dt, zz.dt.; line 6 pos 9

关键信息:

Reference 'dt' is ambiguous

    “dt”这个字段引用不明确,a表、b表,c表可能都有这个字段,但是你引用的时候没指定哪张表。

【Spark报错】CDH的spark无法读取字段中含有特殊字符“-“的orc表mismatched input ‘-‘ expecting ‘:‘ 背景故事 先看报错信息: mismatched input ‘-’ expecting ‘:’ 报错的意思就是说,在这个表里面,字段名中存在特殊符号“-”,无法解析报错。 这个问题会发生在CDH的spark中。如果不是CDH的spark版本的程序,可以跳过此文章。 解决方案: 不要使用CDH版本的spark就好了。比如我这里出现报错的时候,使用的版本是2.4.0-cdh6.1.1 那么把这个版本修改为2.4.0就好了。 过程分析 过程早就分析完了,下面写一篇结果: 环境版本 spark-sql_2.11 阅读详情

相关推荐

DataGrip远程连接Spark-sql,和使用beeline命令来连接hive

#DataGrip连接Spark SQL #sparksql与hive整合后,使用beeline命令进入hive

ABU009的博客 1847

Spark Error pyspark.sql.utils.ParseException: “\nmismatched input ‘FROM‘ expecting

代码片段: data = spark.sql(f""" SELECT p.skuseq , p.name , p.enabled FROM base_promotion p WHERE p.enabled is TRUE """) 错误信息: py4j.protocol.Py4JJavaError: An error occurred while calling o24.sql. : org.apach

三丰的专栏 1万+

Spark报错与日志问题查询指南

一、各界面说明 1.1、查看YARN页面的driver日志 可以在右侧搜索框中填对应application号找到任务,然后点击对应的application号链接,如下图所示: 这样会进入该application的信息界面,“FinalStatus”显示了该application的最后状态,点击下方的“logs”按钮也会进入到driver日志界面,如下图所示: 对于driver日志而言,代码中的println()和show()等函数的输出,一般都在stdout里,大部分重要的报错信息都在stderr里。...

1482

jdbc执行sql出现错误: mismatched input ‘,’ excepting ‘.‘ 应该如何解决?

      最近有一个需求,需要查出来数据,再插入到数据库种。采用的办法是:先把数据取出,放到一个list中,然后循环list,拼接sql的插入语句,然后执行sql。       代码大概如下(简化了业务,表达大意): String insertSql = "insert into t_test(\"name\") values"; StringBuffer sb = new Stri

慢慢来 3万+

遇到问题--presto---mismatched input ‘in‘ expecting {, ‘AND‘, ‘EXCEPT‘, ‘GROUP‘, ‘HAVING‘, ‘INTERSECT‘, ‘

情况 在presto中使用查询语句如下: select id from table where id in array[1,2,3]; 报错如下: select id from table where id in array[1,2,3]; mismatched input 'in' expecting {<EOF>, 'AND', 'EXCEPT', 'GROUP', 'HAVING', 'INTERSECT', 'LIMIT', 'OR', 'ORDER', 'UNION'} 原因

直到世界的尽头 1万+

CISSP/CCSP证书到手后别松懈!保姆级维持攻略:CPE积分怎么攒?年费怎么交?

本文为CISSP/CCSP持证者提供详细的维持认证攻略,重点介绍如何高效积累CPE积分和避免年费缴纳中的常见问题。通过免费与付费资源结合的策略,帮助持证者轻松完成年度认证要求,同时利用认证创造职业价值。

weixin_30859423的博客 415

Spark SQL 报错总结

报错一: 背景 启动spark-shell后查询hive中的表信息,报错 $SPARK_HOME/bin/spark-shell spark.sql("select * from student.student ").show() 日志 Caused by: java.lang.RuntimeException: Unable to instantiate org.apache.hadoop.hi...

weixin_33798152的博客 2426

ADS 2024实战:手把手教你搞定CGH40010F的Doherty功放仿真与版图(附避坑指南)

本文详细介绍了使用ADS 2024进行CGH40010F Doherty功放从仿真到版图的全流程设计,涵盖器件建模、稳定性分析、负载牵引匹配和版图联合仿真等关键步骤。特别针对新手常见问题提供避坑指南,帮助工程师高效完成射频功放设计,提升5G基站和雷达系统的性能。

weixin_42528191的博客 221

Spark SQL 中的 SQL 查询与 DataFrame API 查询有什么区别?

Spark SQL 查询与 DataFrame API 功能等价但各具特色:SQL 采用声明式语法,运行时类型检查,适合熟悉传统 SQL 的开发者;DataFrame API 提供链式方法调用,支持编译时类型检查(Scala)和 IDE 智能提示,更适合复杂数据处理。两者底层共享相同的 Catalyst 优化器,最终生成相同的执行计划。SQL 适合临时分析,而 DataFrame API 在代码可维护性、重构能力和类型安全方面更具优势,特别适合构建生产级数据处理管道。

weixin_45422672的博客 938

完整的申请邓白氏编码的流程(手把手教你申请邓白氏编码)

申请公司的苹果开发者账号和企业级的苹果开发者账号时,都会用到邓白氏编码,也就是我们申请苹果开发者账号时需要填写的D-U-N-S Number。     申请这个邓白氏编码是免费的,但是从像华夏邓白氏公司提交申请到可以申请苹果开发者账号来用这个9位的D-U-N-S Number,需要一段时间,我申请得到D-U-N-S Number,用了8个工作日(不算周末哦)

wxw2011014003的博客 9万+

第四届“网鼎杯”网络安全大赛 - 青龙组

第四届“网鼎杯”网络安全大赛 - 青龙组

lpppp小公主的博客 1313

基于spark1.3.1的spark-sql实战-01

OK !好久不见,大家都忙着各自的事情,me too, 博客也好久木有更新了,因为一直比较忙 spark sql 三个核心部分: 1. 可以加载各种结构化数据源(e.g., JSON, Hive, and Parquet). 2.  可以让你通过SQL ,spark 内部程序或者外部工具,通过标准的数据库连接(JDBC/ODBC)连接spark,比如一个商业智能的工具Tableau 3.当

stark_summer的专栏 2万+

全局子程序 参数调用

为什么要子程序: 为了实现程序结构化,我们尽量使用不同功能的功能块来实现一些特定的功能, 子程序接口: 使用过程的注意事项,尤其是数组使用时的注意事项 从一个主程序中可以将参数传递到局部或全局子程序和函数中。 怎样传递参数有 2 种方式: 作为 IN 参数 变量值在主程序中保持不变。 这种传递方式也称为“ 值传递 (Call by Value)”。 作为 OUT 参数 子程序读取并更改该值,然后将新值写回到主程序中。 这种传递方式也称为“Call by Reference”。 举例说明 1 DEF MY

Eric_Yang1024的博客 1095

Spark SQL 查询:使用 `spark.sql()` 和临时视图

Spark SQL 提供了两种查询方式:通过 spark.sql() 执行标准 SQL 语句以及使用临时视图。核心功能包括:1) 执行 ANSI SQL 查询并返回 DataFrame 结果;2) 通过 createOrReplaceTempView() 等方法注册临时视图,支持会话级或全局视图;3) SQL 与 DataFrame API 可无缝互操作。最佳实践涉及视图生命周期管理、参数化查询、性能优化等。这种方法特别适合复杂查询场景和熟悉 SQL 的用户,同时保持与 Spark 生态的完全兼容。

csdn_tom_168的博客 874

Steam崩溃:ntdll.dll报错0xc0000374...如何解决?

🏆本文收录于 《全栈 Bug 调优(实战版)》 专栏。专栏聚焦真实项目中的各类疑难 Bug,从成因剖析 → 排查路径 → 解决方案 → 预防优化全链路拆解,形成一套可复用、可沉淀的实战知识体系。无论你是初入职场的开发者,还是负责复杂项目的资深工程师,都可以在这里构建一套属于自己的「问题诊断与性能调优」方法论,助你稳步进阶、放大技术价值。

**My Coding Family** 1156

番外篇 | 关于YOLO11算法的改进点总结

关于YOLO11算法的改进点总结。🌈

小哥谈 2310

hive报错 spark_Spark保存数据到hive,在hive里查询报错

我的原创地址:hive查询报错:java.io.IOException:org.apache.parquet.io.ParquetDecodingException​dongkelun.com前言本文解决如标题所述的一个hive查询异常,详细异常信息为:Failed with exception java.io.IOException:org.apache.parquet.io.ParquetDe...

weixin_39840111的博客 774

基于STM32单片机设计的红外测温仪(带人脸检测)_34

当前设计的这款红外非接触式测温仪由测温硬件+上位机软件组合而成,主要用在地铁、车站入口等地方,可以准确识别人脸进行测温,如果有人温度超标会进行语音提示并且保存当前人脸照片。

8769

spark1.5.1执行spark-sql client执行insert into 报错 解决

原先语句是在spark2.1上执行的sql,现在放到spark1.5上执行执行失败; 现象描述:如果没有用insert 直接执行select 语句,是不会报错,执行insert 但是去除exists的子查询,也是不会报错。所以感觉很奇怪,然后将not exists用left anti join 代替 发现spark1.5也不支持。各种尝试后最后在inert into 后面加上table 关键字...

天龙八部 4275

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

使用spark sql查询hive数据后,如何增加列?如何获取指定的列?

      在日常工作中,使用spark sql可以在hive中查询数据并得到一个DataFrame类型的对象。                                &nb

慢慢来 2529

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

java 调用spark sqlserver,使用spark sql在sqlserver上执行查询

I am trying to get the row count and column count of all the tables in a schema in sql server using spark sql.when I execute below query using sqoop, it's giving me the correct results.sqoop eval --co...

weixin_29821699的博客 368

大数据课程——Spark SQL

大数据课程——Spark SQL 练习

weixin_43334251的博客 1265

Spark SQL:用SQL玩转大数据

突破传统Hive单一数据源限制,支持RDD、Parquet、JSON、CSV、JDBC(如MySQL/Oracle)等异构数据源,形成统一抽象的数据帧(DataFrame)接口。Spark SQL的核心价值在于以SQL语法统一异构数据处理流程,通过Catalyst与Tungsten的深度协同,使开发者无需关注底层分布式复杂性,专注业务逻辑实现。摆脱对Hive执行引擎的依赖(仅复用其元数据存储与HQL解析),自研执行引擎实现更高性能扩展。一、Spark SQL核心定位:大数据处理统的一入口。

Daoyiyun的博客 1517

Spark高效数据分析03、Spark SQL

💝博客【红目香薰的博客_优快云博客-计算机理论,2022年蓝桥杯,MySQL领域博主】💝✍本文由在下【红目香薰】原创,首发于优快云✍🤗2022年最大愿望【服务百万技术人次】🤗💝Spark初始环境地址【Spark高效数据分析01、idea开发环境搭建】💝。......

红目香薰 1889

Spark-SQL核心编程

Hadoop在处理结构化数据方面存在局限性,无法有效处理某些类型的数据。Spark应运而生,特别设计了处理结构化数据的模块,称为Spark SQL(原称Shark)。

2401_84627304的博客 1138

Spark SQL编程基本概述及使用

Spark SQL概述 Spark SQL是Spark用来处理结构化数据的一个模块,它提供了2个编程抽象:DataFrame和DataSet,并且作为分布式SQL查询引擎的作用。 在Hive中,它是将Hive SQL转换成MapReduce然后提交到集群上执行,大大简化了编写MapReduc的程序的复杂性,由于MapReduce这种计算模型执行效率比较慢。所有Spark SQL的应运而生,它是将S...

weixin_45102492的博客 472
上一篇: Excel条件格式,利用公式验证数据,对比数据差异
下一篇: 使用pandas进行数据分析,常见的报错解决(长期更新)
TheLittlePython
博客等级 码龄9年 47粉丝 75原创
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值