• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
导航菜单
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • windows
  • 服务器硬件
  • 服务器运维
  • 云计算
  • 虚拟化
  • IIS教程
  • Linux
  • Apache
  • Ftp
  • DNS
  • Nginx
您的位置:首页 > 服务器 >云计算 > MapReduce程序之实现单表关联,mapreduce单表关联

MapReduce程序之实现单表关联,mapreduce单表关联

作者:网友 字体:[增加 减小] 来源:互联网

本文主要包含mapreduce程序,程序转换mapreduce,mapreduce程序开发,mapreduce实现圆周率,mapreduce实现排序等服务器相关知识,网友希望可以进行参考

MapReduce程序之实现单表关联,mapreduce单表关联


 设计思路

       分析这个实例,显然需要进行单表连接,连接的是左表的parent列和右表的child列,且左表和右表是同一个表。

  连接结果中除去连接的两列就是所需要的结果——"grandchild--grandparent"表。要用MapReduce解决这个实例,首先应该考虑如何实现表的自连接;其次就是连接列的设置;最后是结果的整理。

      考虑到MapReduce的shuffle过程会将相同的key会连接在一起,所以可以将map结果的key设置成待连接的列,然后列中相同的值就自然会连接在一起了。再与最开始的分析联系起来:

  要连接的是左表的parent列和右表的child列,且左表和右表是同一个表,所以在map阶段将读入数据分割成child和parent之后,会将parent设置成key,child设置成value进行输出,并作为左表;再将同一对child和parent中的child设置成key,parent设置成value进行输出,作为右表。为了区分输出中的左右表,需要在输出的value中再加上左右表的信息,比如在value的String最开始处加上字符1表示左表,加上字符2表示右表。这样在map的结果中就形成了左表和右表,然后在shuffle过程中完成连接。reduce接收到连接的结果,其中每个key的value-list就包含了"grandchild--grandparent"关系。取出每个key的value-list进行解析,将左表中的child放入一个数组,右表中的parent放入一个数组,然后对两个数组求笛卡尔积就是最后的结果了

程序代码


import java.io.IOException;

import java.util.*;

import org.apache.hadoop.conf.Configuration;

import org.apache.hadoop.fs.Path;

import org.apache.hadoop.io.IntWritable;

import org.apache.hadoop.io.Text;

import org.apache.hadoop.mapreduce.Job;

import org.apache.hadoop.mapreduce.Mapper;

import org.apache.hadoop.mapreduce.Reducer;

import org.apache.hadoop.mapreduce.lib.input.FileInputFormat;

import org.apache.hadoop.mapreduce.lib.output.FileOutputFormat;

import org.apache.hadoop.util.GenericOptionsParser;

 

public class STjoin {

 

    public static int time = 0;

    /*

     * map将输出分割child和parent,然后正序输出一次作为右表,

     * 反序输出一次作为左表,需要注意的是在输出的value中必须

     * 加上左右表的区别标识。

     */

    public static class Map extends Mapper<Object, Text, Text, Text> {

 

        // 实现map函数

        public void map(Object key, Text value, Context context)

                throws IOException, InterruptedException {

                  String line=value.toString();   

                 String[] strs= line.split("\t"); 

                 context.write(new Text(strs[1]),new Text("1+"+strs[0]));//输出左表

                 context.write(new Text(strs[0]),new Text("2+"+strs[1]));//输出右表

     }

        }

    }

 

    public static class Reduce extends Reducer<Text, Text, Text, Text> {

 

        // 实现reduce函数

        public void reduce(Text key, Iterable<Text> values, Context context)

                throws IOException, InterruptedException {

 

            // 输出表头

            if (0 == time) {

                context.write(new Text("grandchild"

分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • MapReduce程序之实现单表关联,mapreduce单表关联
  • Hadoop学习---第三篇Hadoop的第一个Mapreduce程序,hadoopmapreduce

相关文章

  • 机器学习算法-Adaboost,学习算法-adaboost
  • 整理得很全面的Nginx学习资源,nginx学习资源
  • Docker 使用方法总结之:镜像,docker总结
  • Spark MLlib Deep Learning Deep Belief Network (深度学习-深度信念网络)2.1,mllibbelief
  • NOSQL(六)集群并发计算模型Map-Reduce,nosqlmap-reduce
  • 多网卡PC装OVS改造成OpenFlow交换机配置脚本,ovsopenflow
  • Flume 配置文件概述
  • RabbitMQ(python实现)学习之二:Producer发送消息至多个消息队列queue(广播消息),rabbitmqqueue
  • 说说hadoop,hadoop
  • Elasticsearch之Nested Query,elasticsearch

文章分类

  • windows
  • 服务器硬件
  • 服务器运维
  • 云计算
  • 虚拟化
  • IIS教程
  • Linux
  • Apache
  • Ftp
  • DNS
  • Nginx

最近更新的内容

    • 最小 Docker 镜像 hello-world 剖析,dockerhello-world
    • CloudStack VM运行状态的监控-Management,cloudstack系统vm
    • 大师Geoff Hinton关于Deep Neural Networks的建议,geoffhinton
    • hbase-1.0.1的60010页面无法打开,hbase-1.0.160010
    • 如何在coding.net上部署项目 (Flask),coding.netflask
    • storm与hadoop的对比,stormhadoop
    • 超人学院Hadoop大数据资源分享,超人学院hadoop分享
    • Hadoop 和 Spark 的异同
    • Fedora20上源码安装Xen4.3.0,fedora20xen4.3.0
    • A Note on Distributed Computing,anoteondialectic

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有