陕西手机网站建设公司,下载58同城本地版,无需注册免费创建网站,ios开发入门【背景】
我正在用SpringBoot框架写一个数据治理项目#xff0c;目前所处阶段是将hive和hdfs中的元数据提取出来#xff0c;存储到MySQL中#xff0c;我的hive和hdfs上的数据存储在三台Linux服务器上#xff08;hadoop102-104#xff09;#xff0c;MySQL在我本地Window…【背景】
我正在用SpringBoot框架写一个数据治理项目目前所处阶段是将hive和hdfs中的元数据提取出来存储到MySQL中我的hive和hdfs上的数据存储在三台Linux服务器上hadoop102-104MySQL在我本地Windows上
【问题】
在我启动SpringBoot服务准备将hive元数据提取到MySQL中时发现hive中的数据可以正常提取到通过打断点能看到81张能正常出来 但MySQL就是不显示 【原因】
原因1、Service模块和Mapper模块的类接口上没标明是我本地MySQL的数据源DS(xxx)
原因2、application.properties这个文件中镜像源没写成动态的
原因3、我的认知问题SpringBoot中的主类main方法【DgaApplication】只负责启动服务并不负责Hive数据提取和MySQL数据装载当然前提是你没在main里调用该方法我以为启动服务了里面所有的类都会自动执行并没有在test模块测试【testMetaStore】用于将hive数据装载到MySQL这个方法傻了傻了。 【解决】 原因1的解决在ServiceMapper模块接口和类上都加上DS(dga-local)
这个按理说在Mapper接口上加了注解在Service上可以不接但我都加确保万无一失 原因2的解决application.properties文件中改为动态数据源
hive.metastore.server.urlthrift://hadoop102:9083# Linux集群上的MySQL
spring.autoconfigure.excludecom.alibaba.druid.spring.boot.autoconfigure.DruidDataSourceAutoConfigure
spring.datasource.dynamic.datasource.dga.urljdbc:mysql://hadoop102:3306/dga?characterEncodingutf-8useSSLfalseallowPublicKeyRetrievaltrue
spring.datasource.dynamic.datasource.dga.driver-class-namecom.mysql.cj.jdbc.Driver
spring.datasource.dynamic.datasource.dga.usernameroot
spring.datasource.dynamic.datasource.dga.password000000
spring.datasource.dynamic.datasource.dga.druid.initial-size5
spring.datasource.dynamic.datasource.dga.druid.min-idle5
spring.datasource.dynamic.datasource.dga.druid.max-active20
spring.datasource.dynamic.datasource.dga.druid.max-wait60000
spring.datasource.dynamic.datasource.dga.druid.test-on-borrowtrue
spring.datasource.dynamic.datasource.dga.druid.test-while-idletrue
spring.datasource.dynamic.datasource.dga.druid.test-on-returnfalse# 自己本地Windows的MySQL
spring.datasource.dynamic.datasource.dga_local.urljdbc:mysql://localhost:3306/dga?characterEncodingutf-8useSSLfalseallowPublicKeyRetrievaltrue
spring.datasource.dynamic.datasource.dga_local.driver-class-namecom.mysql.cj.jdbc.Driver
spring.datasource.dynamic.datasource.dga_local.usernameroot
spring.datasource.dynamic.datasource.dga_local.password123456
spring.datasource.dynamic.datasource.dga_local.druid.initial-size5
spring.datasource.dynamic.datasource.dga_local.druid.min-idle5
spring.datasource.dynamic.datasource.dga_local.druid.max-active20
spring.datasource.dynamic.datasource.dga_local.druid.max-wait60000
spring.datasource.dynamic.datasource.dga_local.druid.test-on-borrowtrue
spring.datasource.dynamic.datasource.dga_local.druid.test-while-idletrue
spring.datasource.dynamic.datasource.dga_local.druid.test-on-returnfalse
注意标红的这段代码也要加否则可能会报错spring.datasource.dynamic.datasource.dga_local.urljdbc:mysql://localhost:3306/dga?characterEncodingutf-8useSSLfalseallowPublicKeyRetrievaltrue 原因3的解决在test类中执行装载方法 Testvoid testMetaStore() throws Exception {tableMetaInfoServiceImpl.initTableMeta(gmall,2022-05-22);}
主类启动以后再test模块中调用一次这个方法 上述操作都更改后再查看MySQL数据 成功~