hive(hdfs)补数脚本
pb级别迁移通常要持续1个月以上。一般的过程是,全量迁移,追平数据,增量同步,校验,补数。
这里的指定补数脚本:
输入需要补数的表,如Input.txt,如果有分区则加补此分区,没有分区,则重迁移此表。
input.txt
ods_xxx dt=202403
dwd_xxx
dwd_xxxd temp
则补数脚本应该满足,迁移ods_xxx/dt=202403分区的数据,迁移dwd_xxx的数据,迁移dwd_xxxd/temp的数据。
input.txt格式
ods_xxr dt=20250214
ods_xi_202402_monitor dt=20250214
代码
#!/bin/bash
#场景:数据在同一库下,并且hive是内部表(前缀的hdfs地址是相同的)#1.读取一个文件,获取表名con_address=hdfs://xx.xx.xx.104:4007#数组,这个值是存在的 表名/分区名或者文件名
fenqu_allow_list=()#检测即将迁移的数据量
total_size=0
while IFS=' ' read -r table_name fenqu_name
dohdfs dfs -count $con_address/apps/hive/warehouse/bigdata.db/$table_name/$fenqu_nameif [ -z "$fenqu_name" ]; thenecho "没有分区,迁移表,检测表大小"elseecho "有分区或文件,检测分区大小或者文件大小"fi#文件大小,字节fenqu_size=$(hdfs dfs -count $con_address/apps/hive/warehouse/bigdata.db/$table_name/$fenqu_name | awk -F ' ' '{print $3}')if [[ "$fenqu_size" =~ ^[0-9]+$ ]]; then#变成GBfenqu_gb=$(echo "scale=2; $fenqu_size / 1073741824" | bc)total_size=$(echo "scale=2;$total_size + $fenqu_gb"| bc)fenqu_allow_list+=("$table_name/$fenqu_name")elseecho "无值$table_name/$fenqu_name" >> fail.txtfi
done < "$1"echo "此批迁移的总大小是$total_size GB"read -p "是否继续? (y/n): " user_input# 判断用户输入
if [[ "$user_input" == "y" || "$user_input" == "Y" ]]; thenecho "即将执行脚本"
elif [[ "$user_input" == "n" || "$user_input" == "N" ]]; thenecho "退出脚本..."exit 0
elseecho "无效输入,退出脚本..."exit 1
fideclare -A repair_map
#迁移指定分区或者文件
for element in "${fenqu_allow_list[@]}"; dotable_name=$(echo "$element" | awk -F'/' '{print $1}')echo "表名是$table_name"#删除对应的内容echo "执行命令 hdfs dfs -rm -r $con_address/apps/hive/warehouse/bigdata.db/$element"hdfs dfs -rm -r $con_address/apps/hive/warehouse/bigdata.db/$element#迁移source_path=hdfs://xx.xx.xx.7:8020/apps/hive/warehouse/bigdata.db/$elementtarget_path=hdfs://xx.xx.xx.104:4007/apps/hive/warehouse/bigdata.db/$elementecho "执行命令 hadoop distcp -skipcrccheck -i -strategy dynamic -bandwidth 30 -m 20 $source_path $target_path"hadoop distcp -skipcrccheck -i -strategy dynamic -bandwidth 30 -m 20 $source_path $target_path#table_name去重repair_map["$table_name"]=1echo "-----------------------"
donefor key in "${!repair_map[@]}"; dotable_name=$key#修复元数据BEELINE_CMD="beeline -u 'jdbc:hive2://xx.xx.xx.104:7001/cfc;principal=hadoop/xx.xx.xx.104@TBDS-09T7KXLE'"# 执行MSCK REPAIR TABLE命令echo "Repairing partitions for table: $table_name"$BEELINE_CMD -e "MSCK REPAIR TABLE $table_name;"if [ $? -eq 0 ]; thenecho "Successfully repaired partitions for table: $table_name"elseecho "Failed to repair partitions for table: $table_name"fi
done
相关文章:
hive(hdfs)补数脚本
pb级别迁移通常要持续1个月以上。一般的过程是,全量迁移,追平数据,增量同步,校验,补数。 这里的指定补数脚本: 输入需要补数的表,如Input.txt,如果有分区则加补此分区,没…...
Python学习心得函数
一、函数的定义及调用 1.函数的定义: 函数的定义:函数是将一段能实现某种特定功能的代码,使用函数名进行封装,并通过函数名称进行调用。从而达到一次编写,多次调用的目的。 2.函数类型分为两类: &#…...
RabbitMQ服务异步通信
消息队列在使用过程中,面临着很多实际问题需要思考: 1. 消息可靠性 消息从发送,到消费者接收,会经理多个过程: 其中的每一步都可能导致消息丢失,常见的丢失原因包括: 发送时丢失: 生…...
适用于 Windows 仅 0.6MB 且免费无广告的绿色截图工具
软件介绍 YasoCut 可是一款源自 GitHub 的宝藏截图软件,专为 Windows 系统打造,亮点十足。它体积超小,仅有 0.6MB,并且简单易用、免费无广告,还贴心地提供了绿色版本。 这款软件的独特之处在于,和常见截图…...
three.js+WebGL踩坑经验合集(8.2):z-fighting叠面问题和camera.near的坑爹关系
本篇延续上篇内容: three.jsWebGL踩坑经验合集(8.1):用于解决z-fighting叠面问题的polygonOffset远没我们想象中那么简单-CSDN博客 笔者在上篇提到,叠面的效果除了受polygonOffset影响以外,还跟相机的近裁剪面camera.near密切相关ÿ…...
[LeetCode力扣hot100]-链表
相交链表 160. 相交链表 - 力扣(LeetCode) 思路就是遍历两个链表,有相同的部分就可以视为相交。 但是长度不一样,比如两个会相交的链表,headA 的长度为 a c,headB 的长度为 b c,其中 c 是公…...
Deepseek官方整理的13类提示词推荐
最近 deepseek 实在是太火了,网上出现了各种大神教你怎么用好它的免费教程,当然也还有各种需要付费才教你怎么用提示词的课程。但我觉得对于使用 AI 来说,根本就不需要教,关键是要理解一条和 AI 沟通的核心原则:和人交…...
hystrix超详细教学
1、什么是hystrix? 是一个做熔断的框架,当程序被高并发访问时可能会造成微服务的宕机,hystrix可以熔断微服务之间通信。防止后台服务发生雪崩。 2、Hystrix作用 熔断查看微服务请求状态 3、Hystrix使用场景 是在微服务架构下才有意义&am…...
Linux的基础指令和环境部署,项目部署实战(下)
目录 上一篇:Linxu的基础指令和环境部署,项目部署实战(上)-CSDN博客 1. 搭建Java部署环境 1.1 apt apt常用命令 列出所有的软件包 更新软件包数据库 安装软件包 移除软件包 1.2 JDK 1.2.1. 更新 1.2.2. 安装openjdk&am…...
250217-数据结构
1. 定义 数据结构是数据的存储结构,即数据是按某些结构来存储的,比如线性结构,比如树状结构等。 2. 学习意义 数据结构是服务于算法的,为了实现算法的高效计算,所以将数据按特定结构存储。比如使用快速插入或删除的…...
【Java基础】Java数组
前言 在Java编程中,数组是一种非常基础且重要的数据结构。无论你是新手还是有经验的开发者,理解如何有效地使用数组对于编写高效和可维护的代码至关重要。 数组的静态初始化 静态初始化是指在声明数组的同时为其元素赋值。这种方式非常适合于你已经知…...
【拥抱AI】GPT Researcher如何自定义配置LLM
GPT Researcher默认的 LLM(大型语言模型)和嵌入式模型是 OpenAI,因为其卓越的性能和速度。不过,GPT Researcher 支持各种开源和闭源的 LLM 和嵌入式模型,你可以通过更新 SMART_LLM、FAST_LLM 和 EMBEDDING 环境变量轻松…...
网工项目理论1.7 设备选型
本专栏持续更新,整一个专栏为一个大型复杂网络工程项目。阅读本文章之前务必先看《本专栏必读》。 一.交换机选型要点 制式:盒式交换机/框式交换机。功能:二层交换机/三层交换机。端口密度:每交换机可以提供的端口数量。端口速率:百兆/千兆/万兆。交换容量:交换矩阵…...
扩散模型中的马尔可夫链设计演进:从DDPM到Stable Diffusion全解析
一、技术原理与数学推导(附核心公式) 1.1 扩散过程数学建模 马尔可夫链前向过程定义: q(x_{1:T}|x_0) \prod_{t1}^T q(x_t|x_{t-1})噪声调度函数(以余弦调度为例): \beta_t \frac{1 - \cos(\pi t/T)}…...
游戏引擎学习第112天
黑板:优化 今天的内容是关于优化的,主要讨论了如何在开发中提高代码的效率,尤其是当游戏的帧率出现问题时。优化并不总是要将代码做到最快,而是要确保代码足够高效,以避免性能问题。优化的过程是一个反复迭代的过程&a…...
国鑫DeepSeek 671B本地部署方案:以高精度、高性价比重塑AI推理新标杆
随着DeepSeek大模型应用火爆全球,官方服务器总是被挤爆。而且基于企业对数据安全、网络、算力的更高需求,模型本地化部署的需求日益增长,如何在有限预算内实现高效、精准的AI推理能力,成为众多企业的核心诉求。国鑫作为深耕AI领域…...
【YOLOv8】
文章目录 1、yolov8 介绍2、创新点3、模型结构设计3.1、backbone3.2、head 4、正负样本匹配策略5、Loss6、Data Augmentation7、训练、推理8、分割 Demo附录——V1~V8附录——相关应用参考 1、yolov8 介绍 YOLOv8 是 ultralytics 公司在 2023 年 1 月 10 号开源的 YOLOv5 的下…...
Android - Handler使用post之后,Runnable没有执行
问题:子线程创建的Handler。如果 post 之后,在Handler.removeCallbacks(run)移除了,下次再使用Handler.postDelayed(Runnable)接口或者使用post时,Runnable是没有执行。导致没有收到消息。 解决办法:只有主线程创建的…...
深入解析 Flutter 性能优化:从原理到实践
深入解析 Flutter 性能优化:从原理到实践的全面指南 Flutter 是一个高性能的跨平台框架,但在开发复杂应用时,性能问题仍然可能出现。性能优化是开发高质量 Flutter 应用的关键。本篇博客将从 Flutter 的渲染原理出发,结合实际场景…...
springcloud的组件及作用
Spring Cloud是一个用于构建分布式系统的工具集,它提供了一系列组件来简化微服务架构的开发和部署。以下是一些关键的Spring Cloud组件及其作用: 1. 服务注册与发现 Eureka:Eureka是Spring Cloud中的核心组件之一,用于实现服务注…...
认识Vue3
目录 1. Vue3的优势 2. Vue2 选项式 API vs Vue3 组合式API 使用create-vue搭建Vue3项目 1. 认识create-vue 2. 使用create-vue创建Vue3项目 熟悉Vue3项目目录和关键文件 组合式API - setup选项 1. setup选项的写法和执行时机 2. setup中写代码的特点 组合式API - re…...
Node.js 中的 Event 模块详解
Node.js 中的 Event 模块是实现事件驱动编程的核心模块。它基于观察者模式,允许对象(称为“事件发射器”)发布事件,而其他对象(称为“事件监听器”)可以订阅并响应这些事件。这种模式非常适合处理异步操作和…...
【JavaEE进阶】MyBatis通过注解实现增删改查
目录 🍃前言 🍀打印日志 🌴传递参数 🎋增(Insert) 🚩返回主键 🎄删(Delete) 🌲改(Update) 🌳查(Select) 🚩起别名 🚩结果映射 🚩开启驼…...
【GESP C++三级考试考点详细解读】
GESP C三级考试考点解读及洛谷OJ练习题单 1. 数据编码(原码、反码、补码) 考点解读: 理解计算机中数值的二进制表示方式,包括原码(符号位绝对值)、反码(符号位不变,其余位取反&…...
算法——舞蹈链算法
一,基本概念 算法简介 舞蹈链算法(Dancing Links,简称 DLX)是一种高效解决精确覆盖问题的算法,实际上是一种数据结构,可以用来实现 X算法,以解决精确覆盖问题。由高德纳(Donald E.…...
Java状态机
目录 1. 概念 2. 定义状态机 3. 生成一个状态机 4. 使用 1. 概念 在Java的应用开发里面,应该会有不少的人接触到一个业务场景下,一个数据的状态会发生多种变化,最经典的例子例如订单,当然还有像用户的状态变化(冻结…...
3.1 Hugging Face Transformers快速入门:零基础到企业级开发的实战指南
Hugging Face Transformers快速入门:零基础到企业级开发的实战指南 一、Transformers库:NLP领域的"瑞士军刀" 1.1 核心能力全景 预训练模型库:支持150,000+模型(BERT、GPT、T5等)统一API设计:3行代码完成文本分类、生成、翻译等任务多模态支持:文本、图像、音…...
Java+SpringBoot+数据可视化的家庭记账小程序(程序+论文+安装+调试+售后等)
感兴趣的可以先收藏起来,还有大家在毕设选题,项目以及论文编写等相关问题都可以给我留言咨询,我会一一回复,希望帮助更多的人。 系统介绍 在当下这个科技日新月异、经济蓬勃向上的时代,中国经济正以令人瞩目的速度迅…...
Java-数据结构-(HashMap HashSet)
一、Tree和Hash的区别 在上一篇文章中,我们讲到了"TreeMap"和"TreeSet",但当我们刷题的时候却会发现,实际应用Map和Set时,却常常都只会用"HashMap"和"HashSet",这是为什么呢…...
【Prometheus】prometheus结合pushgateway实现脚本运行状态监控
✨✨ 欢迎大家来到景天科技苑✨✨ 🎈🎈 养成好习惯,先赞后看哦~🎈🎈 🏆 作者简介:景天科技苑 🏆《头衔》:大厂架构师,华为云开发者社区专家博主,阿里云开发者社区专家博主,CSDN全栈领域优质创作者,掘金优秀博主,51CTO博客专家等。 🏆《博客》:Python全…...
python爬虫系列课程3:解决爬虫过程中遇到的编码问题
python爬虫系列课程3:解决爬虫过程中遇到的乱码问题 在爬取某些网站时,以4399小游戏网站为例,正常编写爬虫代码并执行之后会出现乱码,代码如下: import requestsheaders = {User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko…...
ocr智能票据识别系统|自动化票据识别集成方案
在企业日常运营中,对大量票据实现数字化管理是一项耗时且容易出错的任务。随着技术的进步,OCR(光学字符识别)智能票据识别系统的出现为企业提供了一个高效、准确的解决方案,不仅简化了财务流程,还大幅提升了…...
Go入门之map
map类型是引用类型,必须初始化才能使用,为key-value形式 var userinfo make(map[string]string)userinfo["username"] "zhangsan"var user map[string]string{"username": "张三","age": &qu…...
SpringBoot 中封装 Cors 自动配置
在现代 Web 开发中,跨域资源共享(CORS)是一个常见的问题。Spring Boot 提供了灵活的方式来处理 CORS 配置。本文将介绍如何通过自动配置的方式,在 Spring Boot 应用程序中全局配置 CORS。 背景 当浏览器从一个域名的网页去请求另…...
Github很慢/无法访问:简单两步搞定
第一步:获取github当前的DNS列表 第二步:把它们复制到自己本地的hosts文件中,保存 比大象装冰箱还少一步!( 下面具体说怎么操作 ~) 获取github当前的DNS列表 http://raw.hellogithub.com/hosts 把这个地址粘贴到浏…...
反射机制的简单示例
一个使用反射机制的简单示例,这个示例将展示如何使用反射来实现一个通用的数据导出功能。 首先,让我们创建必要的项目结构和文件: 首先修改 pom.xml 添加依赖: <?xml version"1.0" encoding"UTF-8"?&…...
DeepSeek在学术读写翻译中的独特优势
上下文理解能力 DeepSeek的核心优势之一在于其卓越的上下文理解能力。它能够根据前文内容准确理解和回应用户的提问或指令,确保对话的连贯性和相关性。这一能力在处理长篇对话和复杂文本时尤为重要,能够帮助用户更好地把握整体逻辑和细节。 2. 翻译专业…...
rust笔记4-属性derive
在 Rust 中,#[derive] 是一种属性(attribute),用于自动为类型实现某些 Trait。通过 #[derive],编译器可以自动生成这些 Trait 的默认实现,从而减少手动编写重复代码的工作量。 #[derive] 通常用于实现一些常见的 Trait,例如: Debug:为类型生成格式化输出的代码。Clon…...
前端(AJAX)学习笔记(CLASS 2):图书管理案例以及图片上传
* BootStrap弹框 功能:不离开当前页面,显示单独内容,供用户操作 步骤: 1、引入bootstrap.css和bootstrap.js 2、准备弹框标签,确认结构 3、通过自定义属性,控制弹框的显示和隐藏 其中的bootstrap.css…...
跟李沐学AI:InstructGPT论文精读(SFT、RLHF)
原论文:[2203.02155] Training language models to follow instructions with human feedback 原视频:InstructGPT 论文精读【论文精读48】_哔哩哔哩_bilibili 简介 1. RLHF 的基本概念 RLHF 是一种结合强化学习和人类反馈的训练方法,旨在…...
RedisTemplate存储含有特殊字符解决
ERROR信息: 案发时间: 2025-02-18 01:01 案发现场: UserServiceImpl.java 嫌疑人: stringRedisTemplate.opsForValue().set(SystemConstants.LOGIN_CODE_PREFIX phone, code, Duration.ofMinutes(3L)); // 3分钟过期作案动机: stringRedisTemplate继承了Redistemplate 使用的…...
燧光 XimmerseMR SDK接入Unity
官网SDK文档连接: RhinoX Unity XR SDK 一:下载SDK 下载链接:RhinoX Unity XR SDK 二:打开Unity项目,添加Package 1、先添加XR Core Utilties包和XR Interaction Toolkit包 2、导 2、再导入下载好的燧光SDK 三&…...
Mycat中间件
一、概述 Mycat是开源的,活跃的、基于java语言编写的MySQL数据库中间件。可以像使用MySQL一样使用mycat,对于开发人员来说根本感觉不到mycat的存在; 二、安装 Mycat是采用java语言开发的开源数据库中间件,支持windows和linux运行环…...
【HBase】HBaseJMX 接口监控信息实现钉钉告警
目录 一、JMX 简介 二、JMX监控信息钉钉告警实现 一、JMX 简介 官网:Apache HBase ™ Reference Guide JMX (Java管理扩展)提供了内置的工具,使您能够监视和管理Java VM。要启用远程系统的监视和管理,需要在启动Java…...
OpenLayers总结3
一、 静态测距 1.原理 静态测距主要是针对地图上已有的矢量要素(如线要素),利用 OpenLayers 提供的几何计算函数来获取其长度。在实际操作中,先加载包含几何要素的 GeoJSON 数据到矢量图层,当鼠标指针移动到要素上时…...
【OpenCV】在Liunx中配置OpenCV环境变量
将 /usr/local/include/opencv4 加入到环境变量中,可以帮助编译器找到 OpenCV 的头文件。这可以通过设置 CPLUS_INCLUDE_PATH 和 C_INCLUDE_PATH 环境变量来实现。以下是具体步骤: 方法一:临时设置环境变量 如果您希望临时设置这些环境变量…...
游戏引擎学习第109天
回顾目前进展 在这一期中,讨论了游戏开发中的一个重要问题——如何处理Z轴值的表示,尤其是在一个3D游戏中,如何更好地表示和存储这些值。上次的进展中,已经解决了透视投影的问题,意味着渲染部分的Z轴代码基本上已经完…...
npm、yarn、pnpm 的异同及为何推荐 pnpm
文章目录 一、引言二、npm 介绍(一)工作原理和特点(二)优势与不足 三、yarn 介绍(一)诞生背景和特性(二)与 npm 的主要区别 四、pnpm 介绍(一)核心优势和创新…...
基于遗传算法排课系统
一、遗传算法介绍: 遗传算法核心的任务是要通过编码体系,给出解决方案的染色体表现规则,首先需要随机初始化一定数量的种群(population),而种群则由一定数目的个体(individual)构成。每个个体实际上是染色体…...
Windows 图形显示驱动开发-GpuMmu 示例方案
本文介绍常见使用方案以及实现这些方案所需的操作顺序。 更新进程的页表条目 下面是更新页表条目以将属于进程 (P) 的分配映射到物理内存的操作序列。 假定页表分配已驻留在图形处理单元中GPU)内存段。 视频内存管理器在分页进程上下文中为进程 P 的根页表分配分配虚拟地址范…...