大规模数据去重场景

news2024/12/31 1:39:49

eg:表1有50w+条数据;在这50W+数据中找出其中重复的数据。重复数据的条件是:表1中的字段1、字段2、字段3、字段4的值与其他数据的这几个字段值相等(其中表1中有20+字段),请问有什么合适的方案从这50W条数据中筛选出重复的数据(重复数据大概有5000条)

首先对于这种大规模数据,不太好一个个比较找出重复数据,不仅时间长,数据库也会进行大量的io操作,还有可能造成内存泄漏。目前对于这种场景我是总结了两种方法,如有更好的方法也欢迎一起讨论。

一、可以考虑使用 10个 Job,每个 Job 固定一个 ID 范围,扫描出数据。每个 Job 5万的数据量,很快就可以扫出来,而且你可以只到必要的字段。之后用扫描发送MQ,再接收 MQ 消息,查询字段的值是否存在。因为有Job、MQ 了,你可以适当控制扫描和消费速度。

举个例子来说:

  • Job 扫描数据

    • 任务:每个 Job 扫描表中的一部分数据(例如,扫描 5 万条记录)。
    • 提取信息:从每条记录中提取出字段1、字段2、字段3 和字段4 的值,并将这些值打包成消息。
  • 将数据放入 MQ

    • 消息内容:每个 Job 将提取的信息(例如,字段1、字段2、字段3 和字段4 的组合)作为消息放入 MQ 中。消息可以是 JSON 格式的字符串,包含这些字段的值。
  • MQ 中的数据

    • 队列:MQ 中的每条消息都包含一个记录的字段值组合。这些消息在 MQ 的队列中等待被消费者处理。
    • 存储方式:MQ 会将这些消息持久化到磁盘,以便在系统崩溃或重启后能够恢复数据。
  •  消费者处理消息

    • 任务:消费者从 MQ 中读取消息,检查这些字段值组合是否已经存在。消费者可以是一个或多个处理这些消息的进程。
    • 重复检查:消费者可能会将字段值组合存储在一个临时的数据结构(如哈希表)中,以快速判断这些字段组合是否重复。如果发现重复,记录相关信息进行后续处理。

二、对重复的数据判定条件进行冗余一个hash字段,然后拿这个字段判断比较是否有相同的

举个例子来说:

  1. 增加一个hash字段:你可以增加一个额外的字段,比如 hash_code,来存储 字段1字段2字段3字段4 组合的hash值。
  2. 计算hash值:对于每一行数据,你将 字段1字段4 的值拼接在一起,然后计算一个hash值。例如,你可以使用MD5或SHA等hash算法。

例如:

    • 第1行:A-B-C-D -> 计算出一个hash值 hash_1
    • 第2行:X-Y-Z-W -> 计算出一个hash值 hash_2
    • 第3行:A-B-C-D -> 计算出和第1行相同的hash值 hash_1
    • 第4行:A-B-X-D -> 计算出一个新的hash值 hash_3
  1. 通过hash值筛选重复数据:你可以根据 hash_code 来判断哪些数据是重复的。如果两行数据的 hash_code 相同,就可能是重复数据。例如,ID为1和ID为3的 hash_code 都是 hash_1,这意味着它们可能是重复的。接下来可以对它们的原始字段进行进一步比对,确保它们确实重复。

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

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

相关文章

传输层 I(传输层提供的服务、UDP协议)【★★★★】

(★★)代表非常重要的知识点,(★)代表重要的知识点。 运输层是整个网络体系结构中的关键层次之一。一定要弄清以下一些重要概念: (1) 运输层为相互通信的应用进程提供逻辑通信。 (2) 端口和套接字的意义。 …

OpenCV 之 模版匹配多个对象、图片旋转 综合应用

引言 在图像处理和计算机视觉中,模板匹配是一种常用的技术,用于在一幅较大的图像中查找与给定模板图像相似的部分。然而,在实际应用中,目标物体可能会出现在不同的角度,这就需要我们在匹配之前对模板进行旋转处理。本…

[AHK]动态创建带ListBox的窗口,答选择题的界面

根据传入的窗口标题、提示信息(题干)、列表(选项)生成一个带ListBox的窗口(向导界面)。 AHK v1代码 if(A_ScriptFullPath=A_LineFile)MsgBox % ListBox("窗口标题", "这是一个生成listbox的Demo", "a|b|c|d|",3) return ;-------------…

清华智普ChatGlm批量API多线程写文章软件【glm-4-flash的key免费无限写 】

清华智普GLM-4-Flash经全面测评,在语义理解、数学逻辑、逻辑推理、代码执行以及广泛知识覆盖等方面,其表现显著超越了Llama-3-8B模型。 清华智普GLM-4-Flash模型还具备多种核心功能,包括但不限于流畅的多轮对话能力、内置的网页浏览功能、直…

线上购物商城小程序,uniapp,PHP语言开发在线购物商城小程序

前言: 商城小程序能够帮助商家降低成本、提高效率,为用户提供更加便捷和个性化的购物体验,是移动互联网时代的一种高效商业工具。 一、商城小程序功能有哪些? 基础功能需求 用户注册与登录 - 用户可以通过手机号、微信等方式进…

【第25章】Spring Cloud之Sentinel控制台详解

文章目录 前言一、实时监控二、簇点链路三、流控规则四、熔断规则五、热点规则六、系统规则七、授权规则八、集群流控九、机器列表总结 前言 前面我们详细介绍了Sentinel控制台的安装过程,这里我们来了解各个菜单的功能作用。 一、实时监控 同一个服务下的所有机器…

【网络安全】分析JS文件实现账户接管

未经许可,不得转载。 文章目录 正文正文 网站使用的是简单的OTP(一次性密码)验证机制,通过用户注册时提供的电子邮件发送邮箱验证码。在功能有限的情况下,我选择去分析网站加载的JavaScript文件。 我发现了一个名为 saveJobseekerPasswordInCache 的函数: 这个函数虽然…

等待实质审查的商标可以用吗!

申请注册商标受理书下来后,会有一个等待实质审查,这个审查出来就会出现要么通过初审,要么驳回,要么部分驳回,普推知产商标老杨发现时间大约是三个月左右,所以基本从申请3个月左右就知道结果了。 申请注册商…

智算时空 重塑视界│智汇云舟2024视频孪生产品发布会圆满举行,多个“全球首款”重磅亮相

​秋风送爽,丹桂飘香。9月6日,由北京智汇云舟科技有限公司主办(简称:智汇云舟),北京北科软科技有限公司(简称:北科软)、北京恒升联合科技有限公司(简称&#…

【北京迅为】《STM32MP157开发板使用手册》- 第十一章 编译U-Boot

iTOP-STM32MP157开发板采用ST推出的双核cortex-A7单核cortex-M4异构处理器,既可用Linux、又可以用于STM32单片机开发。开发板采用核心板底板结构,主频650M、1G内存、8G存储,核心板采用工业级板对板连接器,高可靠,牢固耐…

TPM管理培训为何难以落地?原因解析与解决之道

近年来,TPM管理被视为提升设备效率、减少故障率、降低生产成本的关键。然而,尽管TPM的理念被广泛接受,其在实践中的落地却常常面临各种挑战。本文,深圳天行健企业管理咨询公司将深入解析TPM管理培训难以落地的根本原因&#xff0c…

微信小程序登录与获取手机号 (Python)

文章目录 相关术语登录逻辑登录设计登录代码 相关术语 调用接口[wx.login()]获取登录凭证(code)。通过凭证进而换取用户登录态信息,包括用户在当前小程序的唯一标识(openid)、微信开放平台账号下的唯一标识&#xff0…

华为防火墙 nat64

如果设备接收到的IPv6报文的前缀是设备为NAT64定义的前缀,说明报文的目的地址是IPv4网络,报文将经过NAT64处理后被转发至IPv4网络。 如果设备接收到的IPv6报文的前缀不是设备为NAT64定义的前缀,说明报文的目的地址是IPv6网络,报文…

强烈推荐!分享5款ai论文生成软件

在当今学术研究和写作领域,AI论文生成工具的出现极大地提高了写作效率和质量。这些工具不仅能够帮助研究人员快速生成论文草稿,还能进行内容优化、查重和排版等操作。以下是五款值得推荐的AI论文生成软件,特别是千笔-AIPassPaper。 ### 千笔-…

Gin-封装自动路由

O.0 思路一、API二、控制层三、自动路由核心四、分组路由外加中间件使用 思路 由于Java转Go直接使用的goframe框架,然学习Gin时觉得一个接口一个路由太麻烦,于是有了...1、在请求结构体中采用标签的形式,直接给出路由和请求方式 2、在控制层…

yum源配置与静态配置地址

网络yum源 备份配置文件 下载新的CentOS-Base.repo文件到/etc/yum.repos.d/目录下 执行yum clean all清除原有 yum 缓存 执行yum makecache(刷新缓存) 本地yum 将/etc/yum/repos.d/下的文件a都移走,此处移到了该目录下的bak中 找到光盘路…

【重学 MySQL】二十二、limit 实现分页

【重学 MySQL】二十二、limit 实现分页 基本语法实现分页第一页第二页通用公式注意事项在 MySQL 中,LIMIT 子句非常强大,它允许你限制查询结果的数量,同时也经常被用来实现分页功能。分页是 Web 开发中常见的需求,它允许用户浏览大量数据时,一次只查看一小部分数据。 基本…

【重学 MySQL】二十一、order by 实现数据排序

【重学 MySQL】二十一、order by 实现数据排序 基本语法示例按薪水升序排序按薪水降序排序根据多个列排序 注意事项 在MySQL中,ORDER BY子句用于对结果集中的数据进行排序。你可以根据一个或多个列对结果进行升序(ASC)或降序(DESC…

JavaEE:文件操作

文章目录 文件操作和IO文件系统操作File介绍属性构造方法方法 代码演示前四个listmkdirrenameTo 文件操作和IO 文件系统操作 创建文件,删除文件,创建目录,重命名… Java中有一个类,可以帮我们完成上述操作. 这个类叫做File类. File介绍 属性 这个表格描述了文件路径的分隔符…

【IIS实战】ERR_SSL_KEY_USAGE_INCOMPATIBLE

当我们第一次配置IIS服务器做测试环境网站时,如果没有插手做自签名证书,而是用IIS自带的自签名证书,那么现代浏览器访问HTTPS测试站点大概率会有下图所示的报错: (IE:我能打开( •̀ ω •́ )y&#xff0…