1. 错误发生阶段
- COMPILE FAILED:编译阶段(并未生成task)
- EXECUTION FAILED:执行阶段(已生成task,在task执行过程中出错)
- Parse error:词法/语法错误(由AntLR报出)
- Semantic error:语义错误(语法合规但是意义不正确)
- Internal error + 异常类型:编译器内部错误
a.异常类型为真正抛出的异常的类名
- Task + 任务名 + error + 异常类型:Task执行错误
3. 错误内容a. 任务名为编译生成的task名字,如Spark,DDL,PLSQL等等b. 异常类型为真正抛出的异常的类名
- [Error code] + 异常信息
4. 客户端内容a. Error code为真正的错误码,将来会形成完整的文档,根据该异常码准确的找到错误原因及解决办法。b. 异常信息为具体的异常原因,在现阶段为判断错误的主要根据
- JDBC中直接catch到的SQLException中,Message即为上述内容,同时可以拿到SQLException中的SQLState和ErrorCode
- BeeLine客户端因为使用的是JDBC,所以会得到上述内容,并且会在整条信息的头部添加ERROR或者WARNING前缀,以及(state=,code=)后缀
举例:
红字部分表示错误发生阶段,绿字部分表示错误类别,蓝字部分表示错误内容
COMPILE FAILED: Parse error: [Error 40000] line 1:0 cannot recognize input near 'seletc' '*' 'from'
表示编译阶段出错,为语法错误,内容为不认识seletc这个单词
COMPILE FAILED: Semantic error: [Error 10001] Table not found t
表示编译阶段出错,为语义错误,内容为表t不存在
COMPILE FAILED: Internal error ClassCastException: [Error 40000] org.apache.hadoop.hive.ql.plan.ExprNodeGenericFuncDesc cannot be cast to org.apache.hadoop.hive.ql.plan.ExprNodeConstantDesc
表示编译阶段出错,为编译器内部错误,异常为ClassCastException,内容为ExprNodeGenericFuncDesc类不能转换为ExprNodeConstantDesc类(显然是代码里的逻辑不正确,武断的做了强转)
EXECUTION FAILED: Task DDL error HiveException: [Error 1] AlreadyExistsException(message:Table t already exists)
表示执行阶段出错,执行的task为DDL task,异常为HiveException,内容为表已存在
EXECUTION FAILED: Task MAPRED-SPARK error HiveException: [Error 1] MetaException(message:Filtering is supported only on partition keys of type string)
表示执行阶段出错,执行的task为Spark task,异常为HiveException,内容为单值partition只允许用string来做过滤(显然这里的error code 1依然是非常不准确的,有待梳理)
EXECUTION FAILED: Task EXEC PLSQL error PLException: [Error -1024] USER_DEFINED
Program Output:
Now firing dynamic sql.
PL block in dynamic sql100
*********************************************
ANONYMOUS BLOCK (LINE 6, COLUMN 0, TEXT "raise ex")
PROCEDURE 'error_dynamic_sql_test' (LINE 15, COLUMN 18, TEXT "execute immediate stmt using s_var, 100; (statement: declare
ex exception
pragma exception_init(ex, -1024)
begin
put_line(:s || :i)
raise ex
select * from t1 t1
end; :s="PL block in dynamic sql"; :i=100.)")
ANONYMOUS BLOCK (LINE 2, COLUMN 0, TEXT "error_dynamic_sql_test();")
*********************************************
表示执行阶段出错,执行的task为PLSQL task,异常为PLSQL系统异常(PLException),内容为用户显式抛出了自定义异常(异常码为-1024),并且附带了PLSQL程序的标准输出(Program Output)和callstack
注,如果是使用BeeLine的同学,会看到如下格式:
Error: EXECUTION FAILED: Task MAPRED-SPARK error HiveException: [Error 1] MetaException(message:Filtering is supported only on partition keys of type string) (state=08S01,code=1)
粉字部分为BeeLine附带的异常信息,目前没有对这部分做处理,可以适当无视
- 小文件合并以及automerge出现问题怎么解决
- 常见错误排查攻略以及使用问题(问题持续更新中,最近更新时间为2022.12.22)
- 【知识分享】小文件相关的问题以及应该怎么处理
- inceptor部署环境问题
- 【知识分享】如何创建普通ORC表、ORC事务表、ORC分区表以及范围分区分桶表
- 如何构建安全的Kafka集群
- Hyperbase介绍以及在日常监测管理系统场景中的应用实践
- 【知识分享】如何进行Prometheus 的存储容量规划
- 【上】TDH社区版专场完美落幕,来看看我们推出的背景以及几个核心组件的功能介绍吧~
- Elasticsearch安全又双叒叕出问题? 搜索引擎还得看星环科技自主研发的Transwarp Scope