Flink SQL Exception -- Loading class `com.mysql.jdbc.Driver‘. This is deprecated. The new driver...

文章讲述了在使用新版本MySQL连接时遇到的Driver类过时警告,原因在于推荐使用com.mysql.cj.jdbc.Driver。解决方案是在SQL语句中明确指定新的driver类。

1、错误详情

Loading class `com.mysql.jdbc.Driver'. This is deprecated. The new driver class is `com.mysql.cj.jdbc.Driver'. The driver is automatically registered via the SPI and manual loading of the driver class is generally unnecessary.

2、问题原因

使用了最新的mysql连接驱动,现在按照最新官方提示支持将com.mysql.jdbc.Driver 改为 com.mysql.cj.jdbc.Driver

3、解决方案

写sql时指定driver= com.mysql.cj.jdbc.Driver

CREATE TABLE sink_order (
  `date` STRING , --保留关键字需要用飘号引起来
  `language` STRING ,
  current_length INT ,
  category_level1 ARRAY<STRING> , --数组需要指定类型
  id INT ,
  option MAP<STRING,STRING> --MAP需要指定类型
) WITH ( 
connector = jdbc
driver = com.mysql.cj.jdbc.Driver
url = jdbc:mysql://127.0.0.1:3306/test
username= root
password= 123456
table-name = sink_table_01
### 关于 MySQL 驱动程序的警告 当使用较新的 MySQL Connector/J 版本(如 6.x 或更高版本)时,`com.mysql.jdbc.Driver` 已被标记为过时。取而代之的是 `com.mysql.cj.jdbc.Driver`[^1]。这是因为新驱动程序引入了一些增强功能,并且支持通过服务提供者接口 (SPI) 自动注册驱动程序类,因此手动加载驱动程序通常是不必要的。 如果应用程序仍然尝试显式加载旧版驱动程序,则会收到类似于以下消息的警告: > Loading class `com.mysql.jdbc.Driver`. This is deprecated. The new driver class is `com.mysql.cj.jdbc.Driver`. 解决此问题的方法之一是更新 JDBC URL 和依赖项配置以匹配最新的驱动程序版本。例如,在 Maven 中应确保使用的依赖项如下所示[^2]: ```xml <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>8.0.x</version> <!-- 替换为最新稳定版本 --> <scope>runtime</scope> </dependency> ``` 同时,JDBC URL 应该调整为包含必要的参数,例如服务器时区 (`serverTimezone`) 和 SSL 设置 (`useSSL`)。一个典型的 JDBC URL 可能看起来像这样[^3]: ```plaintext jdbc:mysql://localhost:3306/database_name?characterEncoding=utf-8&serverTimezone=UTC&useSSL=false ``` 对于中国地区的时间设置,可以考虑将 `serverTimezone` 参数更改为 `Asia/Shanghai` 或 `GMT%2B8` 来避免因 UTC 时间带来的差异。 --- ### Hive-on-MR 的弃用及其解决方案 Hive-on-MR 是指 Apache Hive 基于 MapReduce 执行引擎的传统实现方式。然而,随着技术的发展,MapReduce 被认为效率较低且难以满足现代大数据处理需求。为此,Apache 社区推荐迁移到更加高效的执行框架,例如 Tez、Spark 或 Flink。 #### 解决方案概述 为了应对 Hive-on-MR 的弃用问题,可以选择以下几种替代方案之一: 1. **迁移至 Hive on Tez**: Tez 提供了一种优化的任务调度机制,能够显著减少作业延迟并提高资源利用率。启用方法通常涉及修改 Hive 配置文件中的属性,例如: ```properties set hive.execution.engine=tez; ``` 2. **切换到 Hive on Spark**: 如果集群已经部署了 Spark,则可以通过更改配置将其作为 Hive 的执行引擎。这一步骤可能需要安装额外的支持包并调整相关参数: ```properties set hive.execution.engine=spark; ``` 3. **采用其他现代化工具链**: 对于某些场景而言,完全替换掉传统 Hive 查询可能是更好的选择。例如,利用 Presto、Trino 或 ClickHouse 等高性能查询引擎完成数据分析工作负载。 无论采取哪种策略,都需要仔细评估现有业务逻辑是否兼容目标平台的功能集以及性能表现如何变化。 --- ### 示例代码片段 以下是基于 Spring Boot 数据源配置的一个简单例子,展示了如何正确指定新版 MySQL 驱动器名称和连接字符串: ```yaml spring: datasource: url: jdbc:mysql://localhost:3306/test_db?useUnicode=true&characterEncoding=utf-8&serverTimezone=Asia/Shanghai&useSSL=false username: root password: secret driver-class-name: com.mysql.cj.jdbc.Driver ``` 注意这里明确设置了 `driver-class-name` 属性指向 `com.mysql.cj.jdbc.Driver` 并包含了适合本地环境的时区选项。 ---
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值