`

hadoop mapreduce多表关联

阅读更多
假设有如下两个文件,一个是表是公司和地址的序号的对应,一个表是地址的序号和地址的名称的对应。
 
表1:
 
[plain] 
A:Beijing Red Star  1  
A:Shenzhen Thunder  3  
A:Guangzhou Honda   2  
A:Beijing Rising    1  
A:Guangzhou Development Bank    2  
A:Tencent   3  
A:Back of Beijing   1  
 
表2:
[plain] 
B:1 Beijing  
B:2 Guangzhou  
B:3 Shenzhen  
B:4 Xian  
 
mapreduce如下:
[plain] 
private static final Text typeA = new Text("A:");  
      
    private static final Text typeB = new Text("B:");  
      
    private static Log log = LogFactory.getLog(MTJoin.class);  
      
    public static class Map extends Mapper<Object, Text, Text, MapWritable> {  
          
        public void map(Object key, Text value, Context context)  
                throws IOException, InterruptedException {  
            String valueStr = value.toString();  
            String type = valueStr.substring(0, 2);  
            String content = valueStr.substring(2);  
            log.info(content);  
            if(type.equals("A:"))  
            {  
                String[] contentArray = content.split("\t");  
                String city = contentArray[0];  
                String address = contentArray[1];  
                MapWritable map = new MapWritable();  
                map.put(typeA, new Text(city));  
                context.write(new Text(address), map);  
            }  
            else if(type.equals("B:"))  
            {  
                String[] contentArray = content.split("\t");  
                String adrNum = contentArray[0];  
                String adrName = contentArray[1];  
                MapWritable map = new MapWritable();  
                map.put(typeB, new Text(adrName));  
                context.write(new Text(adrNum), map);  
            }  
        }  
    }  
      
    public static class Reduce extends Reducer<Text, MapWritable, Text, Text> {  
          
          
          
         public void reduce(Text key, Iterable<MapWritable> values, Context context)  
                 throws IOException, InterruptedException {  
             Iterator<MapWritable> it = values.iterator();  
             List<Text> cityList = new ArrayList<Text>();  
             List<Text> adrList = new ArrayList<Text>();  
             while(it.hasNext())  
             {  
                 MapWritable map = it.next();  
                 if(map.containsKey(typeA))  
                 {  
                     cityList.add((Text)map.get(typeA));  
                 }  
                 else if(map.containsKey(typeB))  
                 {  
                     adrList.add((Text)map.get(typeB));  
                 }  
             }  
             for(int i = 0; i < cityList.size(); i++)  
             {  
                 for(int j = 0; j < adrList.size(); j++)  
                 {  
                     context.write(cityList.get(i), adrList.get(j));  
                 }  
             }  
         }  
    }  
原理很简单,map的出口,以地址的序号作为key,然后出来的时候,公司名称放一个list,地址的名称放一个list,两个list的内容作笛卡儿积,就得到了结果。
输出如下:
 
[plain] 
Beijing Red Star    Beijing  
Beijing Rising  Beijing  
Back of Beijing Beijing  
Guangzhou Honda Guangzhou  
Guangzhou Development Bank  Guangzhou  
Shenzhen Thunder    Shenzhen  
Tencent Shenzhen  
 
分享到:
评论

相关推荐

    hadoop mapreduce多表关联join多个job相互依赖传递参数

    mapreduce多表关联join多个job相互依赖传递参数

    SEARUM:Hadoop MapReduce 关联规则挖掘实现

    海尔姆关联规则挖掘技术的 Hadoop MapReduce 实现。描述并行 FP-Growth 和关联规则挖掘 MapReduce 实现。 它运行 PFPGrowth 的每个阶段,如论文中所述,如论文中所述,针对 SEARUM 进行修改并与 SEARUM 集成 。 注意...

    Hadoop-Topology-Suite:Polygon Overlay的Hadoop MapReduce实现

    使用 MapReduce 和 Hadoop 支持多边形叠加和几何集操作,即多边形交集、联合、差异和空间索引。 有 3 种不同的实现基于 1) 单映射和减少阶段 2) 映射链阶段,以及 3) 仅使用分布式缓存的单映射阶段。 实现基于论文...

    Hadoop开发者第一期入门专刊

    目录:1 Hadoop 介绍 2 Hadoop 在国内应用情况 3 Hadoop 源代码eclipse 编译教程 7 在Windows 上安装Hadoop 教程 13 在Linux 上安装Hadoop...59 表关联在MapReduce 上的实现 63 Hadoop 计算平台和Hadoop 数据仓库的区别

    深入理解大数据--大数据并行处理与编程实践

    《深入理解大数据:大数据处理与编程实践》在总结多年来MapReduce并行处理技术课程教学经验和成果的基础上,与业界著名企业Intel公司的大数据技术和产品开发团队和资深工程师联合,以学术界的教学成果与业界高水平...

    Hadoop实战(陆嘉恒)

    第4-7章深入地讲解了mapreduce计算模型、mapreduce应用的开发方法、mapreduce的工作机制,同时还列出了多个mapreduce的应用案例,涉及单词计数、数据去重、排序、单表关联和多表关联等内容;第8-11章全面地阐述了...

    Hadoop实战-陆嘉恒

    第4-7章深入地讲解了mapreduce计算模型、mapreduce应用的开发方法、mapreduce的工作机制,同时还列出了多个mapreduce的应用案例,涉及单词计数、数据去重、排序、单表关联和多表关联等内容;第8-11章全面地阐述了...

    论文研究-基于Hadoop的多特征协同过滤算法研究.pdf

    协同过滤是互联网推荐系统的核心技术,针对协同过滤推荐算法中推荐精度和推荐效率以及数据可扩展性问题,采用灰色关联相似度,设计和实现了一种基于Hadoop的多特征协同过滤推荐算法,使用贝叶斯概率对用户特征属性...

    Spark和Hadoop的集成

    Hadoop的框架最核心的设计就是:HDFS和MapReduce。HDFS为海量的数据提供了存储,则MapReduce为海量的数据提供了计算。Storm是一个分布式的、容错的实时计算系统。两者整合,优势互补。

    大数据技术 Hadoop开发者第二期 MapReduce HDFS Hive Mahout HBase 共64页.pdf

    6、一对多的表关联在mapreduce中的应用(续) .................. - 26 - 7、InputSplit文件格式分析................................. - 32 - 8、短评:HDFS、MapReduce和HBase三者相辅相成、各有长处 ..... - 34 - ...

    Hadoop实战

    第4-7章深入地讲解了mapreduce计算模型、mapreduce应用的开发方法、mapreduce的工作机制,同时还列出了多个mapreduce的应用案例,涉及单词计数、数据去重、排序、单表关联和多表关联等内容;第8-11章全面地阐述了...

    MapReduce模型--自定义数据类型

    通过自定义数据类型,可以使用Hadoop处理单表数据查询以及多表相互关联的应用场景。

    Hadoop实战丛书

    第4-7章深入地讲解了mapreduce计算模型、mapreduce应用的开发方法、mapreduce的工作机制,同时还列出了多个mapreduce的应用案例,涉及单词计数、数据去重、排序、单表关联和多表关联等内容;第8-11章全面地阐述了...

    《Hadoop实战》试读本(作者:陆嘉恒)

    第4-7章深入地讲解了MapReduce计算模型、MapReduce应用的开发方法、MapReduce的工作机制,同时还列出了多个MapReduce的应用案例,涉及单词计数、数据去重、排序、单表关联和多表关联等内容;第8-11章全面地阐述了...

    hadoop 2.2.2 已编译源码

    java 关联hadoop源码 查看底层实现,mapReduce实现 HDFS实现

    论文研究-基于MapReduce计算模型的并行关联规则挖掘算法研究综述.pdf

    随着数据的爆炸式增长,传统的算法已不能适应大数据挖掘的需要,需要...对已有的基于MapReduce计算模型的并行关联规则挖掘算法进行了分类和综述,对其各自的优缺点和适用范围进行了总结,并对下一步的研究进行了展望。

    大数据技术原理与应用实验

    实验十三 MapReduce单表关联 103 第五章 统一资源管理系统YARN 114 实验十四 YARN命令基础 114 实验十五 YARN命令进阶 118 第六章 分布式列族数据库HBase 123 实验十六 HBase安装部署 123 .........

    Stock-Volatility-Hadoop-MapReduce

    Reducer-1因此,在映射过程之后,Reducer将获得文件名作为键,并将与该相似键相关联的所有值作为可迭代值。 Reducer -1基本上将计算股票的每个月的收益率,并产生包含关键字作为股票名称和包含一个月的收益率的单个...

    hadoop相关知识习题

    ①两者不是强关联关系,没有MapReduce,HBase可以正常运行②MapReduce可以直接访问HBase 7.下面哪些选项正确描述了HBase的特性?A 高可靠性B 高性能C 面向列D可伸缩 8.与Zookeeper类似的框架是?Chubby 9.下面与HDFS...

Global site tag (gtag.js) - Google Analytics