开发者社区 > 大数据与机器学习 > 实时计算 Flink > 正文

Flink1.18.0版本连接外部mysql本地执行测试代码报错

版本:Flink1.18.0

代码:```

public static void main(String[] args) {

    //1、创建TableEnvironment
    EnvironmentSettings settings = EnvironmentSettings.newInstance().build();
    TableEnvironment tEnv = TableEnvironment.create(settings);

    //2、创建source  table
    Schema schema = Schema.newBuilder()
            .column("user",DataTypes.STRING())
            .column("url",DataTypes.STRING())
            .column("cTime", DataTypes.STRING())
            .build();
    tEnv.createTemporaryTable( "sourceTable", TableDescriptor.forConnector("jdbc")
            .schema(schema)
            .option("url","jdbc:mysql://xxxxxx:3306/flink")
            .option("driver","com.mysql.jdbc.Driver")
            .option("table-name","clicklog")
            .option("username","xxx")
            .option("password","xxxx")
            .build()
    );

    //3、创建sink  table
    tEnv.createTemporaryTable("sinkTable",
            TableDescriptor.forConnector("print").schema(schema).build());

    //4、执行sql查询
    Table resultTable = tEnv.sqlQuery(" select user,url,cTime from sourceTable ");

    //5、输出
    resultTable.executeInsert("sinkTable");

}

```

自己的做法:已经将jdbc和mysql连接器对应的jar包传到flink集群下的lib目录,且重启了集群服务,pom文件也引入了依赖,然后运行以上代码报错,错误信息如下:
image.png
网上有说是缺少flink-shaded-guava依赖,pom文件尝试添加后又报guava31的类找不到错误,以下是我的尝试:image.png
个人感觉跟pom依赖关系不大,因为我不运行代码而是直接在flink的sql 客户端建立外部连接后执行一个简单的查询也是报类似错误,请问是什么原因呢,请大佬指点指定

展开
收起
nhwop6pvkcwic 2023-12-29 11:24:24 55 0
2 条回答
写回答
取消 提交回答
  • jdbc的依赖包问题,参考官方文档或者一些技术网站时,引入的jdbc依赖是
    image.png

    解决方法:将以上jdbc依赖删除,换成如下依赖,并将下载后的依赖传到flink集群的各个节点的lib目录下并重启集群服务image.png

    2024-01-03 17:43:10
    赞同 展开评论 打赏
  • 天下风云出我辈,一入江湖岁月催,皇图霸业谈笑中,不胜人生一场醉。

    由于在 Flink 集群中的代码依赖 Guava 30 版本所导致的。我们建议您先检查您的代码中是否存在依赖 Guava 30 版本的情况,如果存在,请尝试更新您的代码以使用其他版本的 Guava 库。因为MySQL的JDBC Driver在获取数据时,由于精度问题,会采用不同的数据类型进行承接。具体说来,对于MySQL的INT UNSIGNED类型,在Java中会使用LONG类型来承接数据,对应Flink SQL中为BIGINT。而对于MySQL的BIGINT UNSIGNED类型,Java中会使用BIGINTEGER类型来承接数据,对应Flink SQL中为DECIMAL(20, 0)。https://help.aliyun.com/zh/flink/support/faq-about-upstream-and-downstream-storage
    ---来自实时计算 Flink版产品文档

    2023-12-29 14:29:54
    赞同 展开评论 打赏

实时计算Flink版是阿里云提供的全托管Serverless Flink云服务,基于 Apache Flink 构建的企业级、高性能实时大数据处理系统。提供全托管版 Flink 集群和引擎,提高作业开发运维效率。

相关产品

  • 实时计算 Flink版
  • 相关电子书

    更多
    搭建电商项目架构连接MySQL 立即下载
    搭建4层电商项目架构,实战连接MySQL 立即下载
    PolarDB MySQL引擎重磅功能及产品能力盛大发布 立即下载

    相关镜像