记录一个写SpringBoot中Hive数据可以正常提取但无法存到MySQL的bug

news2024/12/26 22:38:58

【背景】

我正在用SpringBoot框架写一个数据治理项目,目前所处阶段是将hive和hdfs中的元数据提取出来,存储到MySQL中,我的hive和hdfs上的数据存储在三台Linux服务器上(hadoop102-104),MySQL在我本地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的解决:在Service,Mapper模块接口和类上都加上@DS("dga-local")

(这个按理说在Mapper接口上加了注解,在Service上可以不接,但我都加,确保万无一失)

原因2的解决:application.properties文件中改为动态数据源

hive.metastore.server.url=thrift://hadoop102:9083

# Linux集群上的MySQL
spring.autoconfigure.exclude=com.alibaba.druid.spring.boot.autoconfigure.DruidDataSourceAutoConfigure
spring.datasource.dynamic.datasource.dga.url=jdbc:mysql://hadoop102:3306/dga?characterEncoding=utf-8&useSSL=false&&allowPublicKeyRetrieval=true
spring.datasource.dynamic.datasource.dga.driver-class-name=com.mysql.cj.jdbc.Driver
spring.datasource.dynamic.datasource.dga.username=root
spring.datasource.dynamic.datasource.dga.password=000000
spring.datasource.dynamic.datasource.dga.druid.initial-size=5
spring.datasource.dynamic.datasource.dga.druid.min-idle=5
spring.datasource.dynamic.datasource.dga.druid.max-active=20
spring.datasource.dynamic.datasource.dga.druid.max-wait=60000
spring.datasource.dynamic.datasource.dga.druid.test-on-borrow=true
spring.datasource.dynamic.datasource.dga.druid.test-while-idle=true
spring.datasource.dynamic.datasource.dga.druid.test-on-return=false


# 自己本地Windows的MySQL
spring.datasource.dynamic.datasource.dga_local.url=jdbc:mysql://localhost:3306/dga?characterEncoding=utf-8&useSSL=false&&allowPublicKeyRetrieval=true
spring.datasource.dynamic.datasource.dga_local.driver-class-name=com.mysql.cj.jdbc.Driver
spring.datasource.dynamic.datasource.dga_local.username=root
spring.datasource.dynamic.datasource.dga_local.password=123456
spring.datasource.dynamic.datasource.dga_local.druid.initial-size=5
spring.datasource.dynamic.datasource.dga_local.druid.min-idle=5
spring.datasource.dynamic.datasource.dga_local.druid.max-active=20
spring.datasource.dynamic.datasource.dga_local.druid.max-wait=60000
spring.datasource.dynamic.datasource.dga_local.druid.test-on-borrow=true
spring.datasource.dynamic.datasource.dga_local.druid.test-while-idle=true
spring.datasource.dynamic.datasource.dga_local.druid.test-on-return=false

注意标红的这段代码也要加,否则可能会报错:spring.datasource.dynamic.datasource.dga_local.url=jdbc:mysql://localhost:3306/dga?characterEncoding=utf-8&useSSL=false&allowPublicKeyRetrieval=true

 原因3的解决:在test类中执行装载方法

    @Test
    void testMetaStore() throws Exception {
        tableMetaInfoServiceImpl.initTableMeta("gmall","2022-05-22");
    }

主类启动以后,再test模块中调用一次这个方法:

上述操作都更改后,再查看MySQL数据

成功~

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1688484.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

C语言常用的内存操作函数

在C语言中经常会操作内存中的数据,下面来介绍一下常用的一些内存操作函数。 memcpy memcpy用于从source的位置开始向后复制num个字节到destination的内存位置,其函数原型如下: //destination是目标地址,source是源地址&#xff…

想要学会做抖店,每天重复这些步骤就可以了!

大家好,我是电商糖果 有很多朋友店铺开好之后,不知道每天要干嘛。 只知道把产品上架,然后等着出单。 说实话这种情况的朋友不是一个,而是很多。 糖果做小店也有很多年了,也开了多家店铺,下面就来给大家…

论Promise在前端江湖的地位及作用

系列文章: 先撸清楚:并发/并行、单线程/多线程、同步/异步 论Promise在前端江湖的地位及作用 前言 上篇文章阐述了并发/并行、单线程/多线程、同步/异步等概念,这篇将会分析Promise的江湖地位。 通过本篇文章,你将了解到&#x…

算法刷题笔记 数的范围(C++实现)(二分法重要例题)

文章目录 题目描述题目思路题目代码(C)题目感想 题目描述 给定一个按照升序排列的长度为n的整数数组,以及q个查询。对于每个查询,返回一个元素k的起始位置和终止位置(位置从0开始计数)。如果数组中不存在该…

Flutter 中如何优雅地使用弹框

日常开发中,Flutter 弹框(Dialog)是我们使用频率非常高的控件。无论是提示用户信息、确认用户操作,还是表单填写,弹框都能派上用场。然而,看似简单的弹框,实际使用起来却有不少坑和使用的技巧。…

轻松找回误删短信 | 超强安卓短信恢复神器

概括 我们都曾经历过不小心删除了重要消息,后来又后悔并认为可能无法恢复它们的情况。从技术上讲,该消息不会被删除;它会在您的 Android 手机上存储一段时间。 可以执行 Android 短信恢复,因为它需要一段时间才能从您的 Android…

JavaScript面试 题

1.延时加载JS有哪些方式 延时加载 :async defer 例如:<script defer type"type/javascript" srcscript.js></ script> defer:等html全部解析完成,才会执行js代码,顺次执行的 async: js和html解析是同步的,不是顺次执行js脚本(谁先加载完先执行谁)2.JS数…

黑龙江等保测评深入理解

“没有网络安全&#xff0c;就没有国家安全”&#xff0c;等级保护测评是指按照网络安全系统制定的一系列的防护过程&#xff0c;对已经有的和即将上线的商业服务的基础设施&#xff08;系统&#xff0c;数据库&#xff0c;中间件等&#xff09;所做的一系列的检查&#xff0c;…

代码随想录-Day18

513. 找树左下角的值 给定一个二叉树的 根节点 root&#xff0c;请找出该二叉树的 最底层 最左边 节点的值。 假设二叉树中至少有一个节点。 方法一&#xff1a;深度优先搜索 class Solution {int curVal 0;int curHeight 0;public int findBottomLeftValue(TreeNode roo…

Python筑基之旅-MySQL数据库(三)

目录 一、数据库操作 1、创建 1-1、用mysql-connector-python库 1-2、用PyMySQL库 1-3、用PeeWee库 1-4、用SQLAlchemy库 2、删除 2-1、用mysql-connector-python库 2-2、用PyMySQL库 2-3、用PeeWee库 2-4、用SQLAlchemy库 二、数据表操作 1、创建 1-1、用mysql-…

分布式理论--BASE

目录 是什么BASE 与 CAP&#xff0c;ACID 的区别BASE 和 Paxos 类共识算法的区别相关问题 是什么 BASE 理论是对 CAP 理论的进一步扩展主要强调在分布式系统中&#xff0c;为了获得更高的可用性和性能&#xff0c;可以放宽对一致性的要求&#xff0c;是对 CAP 中 AP 方案的一个…

卷爆短剧出海:五大关键,由AIGC重构

短剧高温下&#xff0c;谈谈AIGC的助攻路线。 短剧&#xff0c;一个席卷全球的高温赛道。 以往只是踏着霸总题材&#xff0c;如今&#xff0c;内容循着精品化、IP化的自然发展风向&#xff0c;给内容、制作、平台等产业全链都带来新机&#xff0c;也让短剧消费走向文化深处&am…

D60SB120-ASEMI整流桥D60SB120参数、封装、尺寸

编辑&#xff1a;ll D60SB120-ASEMI整流桥D60SB120参数、封装、尺寸 型号&#xff1a;D60SB120 品牌&#xff1a;ASEMI 封装&#xff1a;D-SB 批号&#xff1a;2024 最大重复峰值反向电压&#xff1a;1200V 最大正向平均整流电流(Vdss)&#xff1a;60A 功率(Pd)&#x…

Kubernetes 应用滚动更新

Kubernetes 应用版本号 在 Kubernetes 里&#xff0c;版本更新使用的不是 API 对象&#xff0c;而是两个命令&#xff1a;kubectl apply 和 kubectl rollout&#xff0c;当然它们也要搭配部署应用所需要的 Deployment、DaemonSet 等 YAML 文件。 在 Kubernetes 里应用都是以 …

uniapp开发vue3监听右滑返回操作,返回到指定页面

想要在uniapp框架中监听左滑或者右滑手势&#xff0c;需要使用touchstart和touchend两个api&#xff0c;因为没有原生的左右滑监听api&#xff0c;所以我们只能依靠这两个api来获取滑动开始时候的x坐标和滑动结束后的x坐标做比对&#xff0c;右滑的话&#xff0c;结束时候的x坐…

RabbitMQ(一)概述第一个应用程序

文章目录 概述AMQP和JMS官网安装开始第一个程序 概述 消息队列是实现应用程序和应用程序之间通信的中间件产品 AMQP和JMS 工作体系 官网 https://www.rabbitmq.com/ RabbitMQ是一款基于AMQP、由Erlang语言开发的消息队列产品 安装 # 拉取镜像 docker pull rabbitmq:3.13-m…

微信小程序画布显示图片绘制矩形选区

wxml <view class"page-body"><!-- 画布 --><view class"page-body-wrapper"><canvas canvas-id"myCanvas" type"2d" id"myCanvas" classmyCanvas bindtouchstart"touchStart" bindtouchmo…

UEFI EDK2源码学习(一)——环境安装

部署环境 vmvare15.0 ubuntu20.04 docker edk2 源码 具体步骤 docker安装 # 更新apt软件包索引 sudo apt-get update# 添加docker依赖 sudo apt-get install -y \apt-transport-https \ca-certificates \curl \gnupg-agent \software-properties-common# 添加docker 官方…

白嫖免费图床!CloudFlare R2太香了!

1 为啥要折腾搭建一个专属图床&#xff1f; 技术大佬写博客都用 md 格式&#xff0c;要在多平台发布&#xff0c;图片就得有外链后续如博客迁移&#xff0c;国内博客网站如掘金&#xff0c;简书&#xff0c;语雀等都做了防盗链&#xff0c;图片无法迁移 2 为啥选择CloudFlare…

力扣刷题---返回word中所有不重复的单词

当需要从一个数据集合中去除重复元素时&#xff0c;set是一个很好的选择。由于其不允许存储重复的元素&#xff0c;因此可以很容易地实现去重功能。这在处理原始数据或进行数据分析时特别有用。 题目&#xff1a; 给定一个字符串数组 words&#xff0c;请返回一个由 words 中所…