Flink 1.15解析sql报这个错误 大家有遇到过吗?
qlParser parser = SqlParser.create(adsXxjStudentLearnSummarySql);
SqlNodeList sqlNodes = parser.parseStmtList();
错误原因是少了slf4j-nop.jar slf4j-simple.jar, slf4j-log4j12.jar,slf4j-jdk14.jar或 logback-classic.jar中的其中一个jar包,加上去就行(只能是一个,多了就会有冲突)。
解决方案:
在pom.xml配置文件中加入这个依赖包
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
<version>1.7.25</version>
<scope>compile</scope>
</dependency>
其他的依赖包记得删除(把这个删除)
一定要删除,不然还是会出错,之后重新编译生成jar包之后就可。
添加完配置后看看是否有jar包,而且上面的jar包中确保只有一个。
而且scope要改为compile则表示编译的时候就会加载此jar包,那么最后就运行成功了
配置这些依赖包的时候一定要确保target上有这些包,可以通过maven clean 以及编译打包完成。
最后就可以成功启动了。
——参考链接。
出现这种问题的原因可能是由于你在运行程序时没有正确地引入SLF4J日志库及其依赖项。为了帮助解决问题,我们需要确认以下几个步骤:
第一步:确认环境
第二步:查看项目的pom.xml文件
如果你是在maven项目下开发的话,打开pom.xml文件看看是否有如下内容:
<dependency>
<groupId>ch.qos.logback</groupId>
<artifactId>logback-classic</artifactId>
<version>1.2.3</version>
</dependency>
<!-- 如果使用的是Log4j -->
<!--<dependency>-->
<!-- <groupId>org.slf4j</groupId>-->
<!-- <artifactId>slf4j-api</artifactId>-->
<!-- <version>1.7.6</version>-->
<!-- </dependency>-->
<!-- <dependency>-->
<!-- <groupId>org.slf4j</groupId>-->
<!-- <artifactId>jul-to-slf4j</artifactId>-->
<!-- <version>1.7.6</version>-->
<!-- </dependency>-->
<!-- <dependency>-->
<!-- <groupId>org.slf4j</groupId>-->
<!-- <artifactId>slf4j-simple</artifactId>-->
<!-- <version>1.7.6</version>-->
<!-- </dependency>-->
如果有误,请按照正确的顺序重新添加对应的依赖。
第三步:确认静态绑定器加载
有时候,即使我们在编译期间设置了正确的依赖,但在运行时仍然可能出现找不到相关类的情况。这时可以通过以下两种方式进行修复:
Logger logger = LoggerFactory.getLogger(MyClass.class.getName());
logger.info("Hello World from {}", MyClass.class.getName());
这里假设你的类名为`MyClass`。
2. 更改静态绑定器的优先级:
有时是因为其他第三方库如 log4j 的冲突造成的。可以在 pom.xml 文件中添加排除依赖:
```xml
<exclusions>
<exclusion>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-logging</artifactId>
</exclusion>
</exclusions>
这将会把 SpringBoot 自带的日志组件排除在外,从而让 SLF4J 取代 Log4j 成为主导日志工具。
这个错误表明在加载org.slf4j.impl.StaticLoggerBinder类时出了问题。SLF4J(Simple Logging Facade For Java)是一个Java日志抽象层,使得开发者可以选择任意的日志实现,如Log4j、logback等。
错误堆栈的最后一部分提到了SqlParserException,表示在读取SQL语句时遇到了问题。具体的错误信息指出在第1行第1列发现了"create"关键字,而这并不是合法的SQL语句开头。
解决方法可能因具体情况而异,但以下是一些通用的建议:
org.apache.calcite.sql.parser.CalciteSqlParserImpl;
如果你是第一次运行flink,确保所有依赖项都已经正确下载和配置好;
如果上述方法都不能解决问题,尝试卸载旧版本,重新安装flink,以确保所有依赖项都在同一个地方。
在解析 SQL 语句时,Flink 遇到了一个不认识的 "create" 关键字。这可能是因为您的 SQL 语句中包含了错误的语法,或者您尝试解析的 SQL 语句不是 Flink 能够处理的。
为了帮助您解决问题,请检查您的 SQL 语句以确保它符合 Flink 支持的 SQL 语法。您可以在 Flink 文档中找到有关 Flink SQL 语法的详细信息:https://ci.apache.org/projects/flink/flink-docs-release-1.15/docs/sql/sql.html
此外,如果您在尝试执行创建表的 SQL 语句,请注意 Flink 1.15 版本不支持 CREATE TABLE 语句。要创建表,您需要使用 Flink 1.13 或更早的版本。如果您使用的是 Flink 1.15,您需要使用 CREATE SCHEMA 语句来创建表
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
实时计算Flink版是阿里云提供的全托管Serverless Flink云服务,基于 Apache Flink 构建的企业级、高性能实时大数据处理系统。提供全托管版 Flink 集群和引擎,提高作业开发运维效率。