【MapReduce】MapReduce(DataJoin)实现数据连接+Bloom Filter优化
- 数据:
file1:categoryname addressID
Beijing Red Star 1
Shenzhen Thunder 3
Guangzhou Honda 2
Beijing Rising 1
Guangzhou Development Bank 2
Tencent 3
Bank of Beijing 1
Nanchang Univ 5
Beijing Red Star 1
Nanchang Univ 5
Beijing Red Star 5
Shenzhen Thunder 6
Guangzhou Honda 5
Beijing Rising 6
Guangzhou Development Bank 3
Tencent 5
Bank of Beijing 6
Nanchang Univ 7
Beijing Red Star 1
Shenzhen Thunder 354
Guangzhou Honda 2
Beijing Rising 1
Guangzhou Development Bank 2
Tencent 334
Bank of Beijing 33
Nanchang Univ 5
Beijing Red Star 1
Nanchang Univ 5
Beijing Red Star 51
Shenzhen Thunder 6
Guangzhou Honda 52
Beijing Rising 66
Guangzhou Development Bank 3
Tencent 5
Bank of Beijing 6
Nanchang Univ 7
Beijing Red Star 1
Shenzhen Thunder 3
Guangzhou Honda 2
Beijing Rising 1
Guangzhou Development Bank 2
Tencent 3
Bank of Beijing 1
Nanchang Univ 5
Beijing Red Star 1
Nanchang Univ 5
Beijing Red Star 5
Shenzhen Thunder 8
Guangzhou Honda 5
Beijing Rising 27
Guangzhou Development Bank 3
Tencent 5
Bank of Beijing 9
Nanchang Univ 7
Beijing Red Star 1
Shenzhen Thunder 3
Guangzhou Honda 2
Beijing Rising 1
Guangzhou Development Bank 2
Tencent 3
Bank of Beijing 11
Nanchang Univ 5
Beijing Red Star 3
Nanchang Univ 5
Beijing Red Star 5
Shenzhen Thunder 6
Guangzhou Honda 5
Beijing Rising 6
Guangzhou Development Bank 3
Tencent 5
Bank of Beijing 6
Nanchang Univ 7
Beijing Red Star 1
Shenzhen Thunder 3
Guangzhou Honda 2
Beijing Rising 1
Guangzhou Development Bank 2
Tencent 3
Bank of Beijing 1
Nanchang Univ 5
Beijing Red Star 1
Nanchang Univ 5
Beijing Red Star 23
Shenzhen Thunder 6
Guangzhou Honda 5
Beijing Rising 6
Guangzhou Development Bank 3
Tencent 5
Bank of Beijing 6
Nanchang Univ 7
file2:addressID cityname
1 Beijing
2 Guangzhou
3 Shenzhen
4 Xian
5 xiamen
6 nanchang
7 sichuan
10 xinjiang
12 shanrao
23 heze
111 fuyang
输出格式:
categoryname addressID cityname
例如:
factoryname addressID addressname
Beijing Red Star 1 Beijing
Beijing Red Star 1 Beijing
Bank of Beijing 1 Beijing
Beijing Rising 1 Beijing
Beijing Red Star 1 Beijing
Beijing Rising 1 Beijing
Beijing Red Star 1 Beijing
Beijing Red Star 1 Beijing
Bank of Beijing 1 Beijing
- 实现:
比较复杂的实现代码见:此处
注意这里实现的连接是内连接。
Bloom Filter的完整实例化代码可以写成:
public static int getOptimalBloomFilterSize(int numRecords, float falsePosRate) {int size = (int) (-numRecords * (float) Math.log(falsePosRate) / Math.pow(Math.log(2), 2));return size;}public static int getOptimalK(float numMembers, float vectorSize) {return (int) Math.round(vectorSize / numMembers * Math.log(2));}int numMembers = Integer.parseInt("10000");float falsePosRate = Float.parseFloat("0.01");int vectorSize = getOptimalBloomFilterSize(numMembers, falsePosRate);int nbHash = getOptimalK(numMembers, vectorSize);BloomFilter filter = new BloomFilter(vectorSize, nbHash, Hash.MURMUR_HASH);
也可以一句话实现:
static private BloomFilter filter1 = new BloomFilter(13287713, 9, MURMUR_HASH);
基本思路是先处理处两个表中共有的addressID,存储filter中,在对两个表进行map的时候过滤掉addressID不在filter中的记录。
可以将filter的内容写入文件存到HDFS,然后从HDFS中读入内容进行判断(实现代码可以参考
【MapReduce】MapReduce(DataJoin)实现数据连接+Bloom Filter优化相关推荐
- MapReduce算法–了解数据连接第二部分
自从我上一次发布以来已经有一段时间了,就像我上一次大休息一样,我正在Coursera上一些课程. 这次是Scala中的函数式编程 原理和反应式编程原理 . 我发现它们都是不错的课程,如果有时间的话,建 ...
- Hadoop实战系列之MapReduce 分析 Youtube视频数据
Hadoop实战系列之MapReduce 分析 Youtube视频数据 一.实战介绍 MapReduce 是 Hadoop 的计算框架. 在运行一个 MR 程序时,任务过程被分为两个阶段:Map 阶段 ...
- 使用MapReduce程序完成相关数据预处理(二)
使用MapReduce程序完成相关数据预处理(二) 数据大概有2万条左右所以部分截取 (格式为csv) 1月20日,北京,大兴区,2,0,0,北京市大兴区卫健委,https://m.weibo.cn/ ...
- ## 使用MapReduce程序完成相关数据预处理
使用MapReduce程序完成相关数据预处理 数据大概有2万条左右所以部分截取 (格式为csv) 1月20日,北京,大兴区,2,0,0,北京市大兴区卫健委,https://m.weibo.cn/270 ...
- 大数据量下的集合过滤—Bloom Filter
算法背景 如果想判断一个元素是不是在一个集合里,一般想到的是将集合中所有元素保存起来,然后通过比较确定.链表.树.散列表(又叫哈希表,Hash table)等等数据结构都是这种思路,存储位置要么是磁盘 ...
- 【guava】大数据量下的集合过滤—Bloom Filter
1.概述 转载防丢失,请看原文 算法背景 相似文章:Bing搜索核心技术BitFunnel原理 如果想判断一个元素是不是在一个集合里,一般想到的是将集合中所有元素保存起来,然后通过比较确定.链表.树. ...
- 利用bloom filter算法处理大规模数据过滤
Bloom Filter是由Bloom在1970年提出的一种快速查找算法,通过多个hash算法来共同判断某个元素是否在某个集合内.可以用于网络爬虫的url重复过滤.垃圾邮件的过滤等等. 它相比hash ...
- 数据算法:Bloom Filter
我们在一些体量亿级的网站或平台注册账号的时候,输入完用户名或账号回车可能会遇到提示:"用户名已存在".系统是如何这么快速的判断出用户名存在与否的呢?这有很多种解决方案: 线性查找: ...
- 使用MapReduce对豆瓣的数据评分进行排序,最终只要:电影名,评分 两个字段。(温馨提示:数据需要去重)
使用MapReduce对豆瓣的数据评分进行排序,最终只要:电影名,评分 两个字段.(温馨提示:数据需要去重) 一. 首先讲一下Java中的compareTo方法: 利用CompareTo时,其返回值为 ...
- MapReduce之基于符号数据的朴素贝叶斯分类(完)
MapReduce之基于符号数据的朴素贝叶斯分类 在上一篇博客MapReduce之基于符号数据的朴素贝叶斯分类(一)中,简单的介绍了朴素贝叶斯算法的原理,接下来讲述如何使用MapReduce实现朴素贝 ...
最新文章
- 30万字,“保姆级”可视化视觉设计优质学习攻略推荐
- UA OPTI570 量子力学 恒等算符在算符计算中的应用
- 关于C语言中递归的一点点小问题
- C语言ODBC连接MySQL数据库制作简易用户登录系统
- Crowdin 使用指南
- android实现字体滚动,Android实现字幕滚动的方法
- 用ObjectProxy扩展模型对象
- 无边框对话框拖动改变大小的实现总结
- linux文本编辑命令vim查找,Linux编辑器vi中文本搜索与替换操作
- 游戏打不开该怎么设置计算机,驱动人生游戏修复工具,轻松解决DNF打不开的问题。...
- 如何在微信公众号优雅地添加代码
- 计算机ipv4地址修改方法,电脑ip地址的修改方法步骤图
- win10总是很快自动休眠怎么解决?
- Python打印详细报错日志,获取报错信息位置行数
- 【数学】函数极限计算
- Petalinux 使用外部ADI的内核源码编译记录-附oe_runmake解决办法
- Access用户如何借助低代码转型为Web(B/S和移动端)开发?
- 联迅文库系统文库介绍
- 项目管理基础知识关键路径和松弛时间
- oracle查看主备库延迟时间,【分享】Oracle 主备库容灾维护常用的九个SQL
热门文章
- Redisson 配置
- 计算机网络未来的发展和趋势论文,计算机网络发展论文范文
- c语言中常用数学符号,2016GRE数学常用数学符号大盘点
- idea项目中的idea文件如何隐藏,以及不小心隐藏之后如何显示idea文件夹
- java ocx调用_Javascript调用OCX控件
- jeesite如何已生成数据的数据源_JeeSite如何正确连接SQL SERVER 数据库
- php 横杠箭头,为什么我的箭头下面有一横线?
- 大数据要如何提高 才能满足智慧城市需求?
- Linux 常用命令学习-文件及文件夹操作相关命令-持续更新
- Cache 应用程序数据缓存