当前位置: 首页 > news >正文

使用Feapder中的Dedup过滤数据

Dedup 简介

Dedup 是 feapder 大数据去重模块,不同于 BloomFilter,去重受槽位数量影响,Dedup 使用了弹性的去重机制,可容纳海量的数据去重。

过滤数据

import random
from feapder.dedup import Dedupdef generate_datas():# 生成一个包含 100 个随机数的列表all_numbers = list(range(1, 101))random.shuffle(all_numbers)  # 打乱顺序# 从打乱后的列表中选择前 50 个数作为 data1datas1 = all_numbers[:50]# 从剩下的 50 个数中选择 20 个数作为 data2 的一部分remaining_numbers = all_numbers[50:]datas2_part1 = remaining_numbers[:20]# 从 data1 中选择 30 个数添加到 data2 中datas2_part2 = random.sample(datas1, 30)# 合并 data2 的两个部分datas2 = datas2_part1 + datas2_part2# 找出在 data2 中但不在 data1 中的数据datas3 = [num for num in datas2 if num not in datas1]# 打印结果print("datas1:", datas1)print("datas2:", datas2)print("对照组数据:", datas3)return datas1, datas2def test_filter(datas1, datas2):dedup = Dedup(Dedup.BloomFilter, redis_url="redis://user:password@localhost:6379/0")# 添加数据dedup.add(datas1)# 过滤掉已存在数据dedup.filter_exist_data(datas2)# 打印剩余数据print(f"去重后数据:{datas2}")if __name__ == "__main__":datas1, datas2 = generate_datas()test_filter(datas1, datas2)

Dedup参数

  • filter_type:去重类型,支持 BloomFilter、MemoryFilter、ExpireFilter、LiteFilter 四种
  • name:过滤器名称,该名称会默认以 dedup 作为前缀 dedup:expire_set:[name]dedup:bloomfilter:[name]。 默认ExpireFilter name=过期时间; BloomFilter name=dedup:bloomfilter:bloomfilter,若对不同数据源去重,可通过 name 参数来指定不同去重库
  • absolute_name: 过滤器绝对名称 不会加 dedup 前缀,当此值不为空时 name 参数无效
  • expire_time: ExpireFilter 的过期时间,单位为秒,其它过滤器不用指定
  • error_rate: BloomFilter / MemoryFilter 的误判率,默认为 0.00001
  • to_md5: 去重前是否将数据转为 MD5,默认是
  • redis_url: redis://[[username]:[password]]@localhost:6379/0
    • BloomFilter 与 ExpireFilter 使用
    • 默认会读取 setting 中的 redis 配置,若无 setting,则需要专递 redis_url
  • initial_capacity: 单个布隆过滤器去重容量,默认 100000000,当布隆过滤器容量满时会扩展下一个布隆过滤器
http://www.dtcms.com/a/266084.html

相关文章:

  • 【python】json.loads()函数处理字符串时不需要指定编码
  • Windows系统编程(Win32 API)
  • pytorch、torchvision与python版本对应关系
  • 什么是软中断
  • 使用Visual Studio 2022创建CUDA编程项目
  • Python爬虫 XPath 三方库lxml
  • Unity Android与iOS自动重启
  • Java综合练习04
  • js代码中的作用域
  • 深度学习×第4卷:Pytorch实战——她第一次用张量去拟合你的轨迹
  • Mausezahn - 网络流量生成与测试工具(支持从链路层到应用层的协议模拟)
  • C++ 解决类相互引用导致的编译错误
  • 状态码301和302的区别
  • 智能设备远程管理:基于OpenAI风格API的自动化实践
  • 渗透靶机 Doctor 复盘
  • 粘包问题介绍
  • JS模块导出导入笔记 —— 默认导出 具名导出
  • 【嵌入式电机控制#8】编码器测速实战
  • C++讲解—类(2)
  • MCP+Cursor入门
  • AI 日报:阿里、字节等企业密集发布新技术,覆盖语音、图像与药物研发等领域
  • 前缀和与差分算法详解
  • 线程池相关介绍
  • SpringSecurity01
  • 【libm】 7 双精度正弦函数 (k_sin.rs)
  • 从混沌到澄明,AI如何重构我们的决策地图与未来图景
  • 把大象塞进冰箱总共分几步:讲讲dockerfile里conda的移植
  • IOC容器讲解以及Spring依赖注入最佳实践全解析
  • XILINX FPGA如何做时序分析和时序优化?
  • Linux之Socket编程Tcp