hadoop 之 Map数据处理(Reduce不参与)

Map-Reduce的通俗理解 Hadoop简介 Hadoop就是一个实现了Google云计算系统的开源系统,包括并行计算模型Map/Reduce,分布式文件系统HDFS,以及分布式数据库Hbase,同时Hadoop的相关项目也很丰富,包括ZooKeeper,Pig,Chukwa,Hive,Hbase,Mahout,flume等. 这里详细分解这里面的概念让大家通过这篇文章了解到底是什么hadoop: 1.什么是Map/Redu... 阅读详情

这几天刚刚接触了MR,发现其对大数据的处理是真的强大。不提执行速度,单单简单的API调用也是非常的容易上手。
不过在学习的过程中,遇到一个需求,就是对一堆数据中的学科编号映射成对应的中文。仔细想一想觉得该过程根本不需要用到Reduce的过程,只要在Map执行之前,调用setUp把学科编号和对应中文存储在HashMap中,然后再在Map对每一行的数据进行处理即可。记录一下该过程,方便以后回顾。

我自定义MapTestMapper来继承Mapper的类,来完成map过程。

/*第一个参数是Mapper的输入key,默认是一个文件的偏移量,
 *第二个参数是Mapper的输入value,默认就是一行行的读取。
 *第三,四个参数是输出的key和value。
 *我的输出类型是NullWritable,因为在map输出的时候,我不需要输出任何的value,只要把输入进来的key处理一下,再将输入key处理一下当初输出key写出去即可
 */

public static class MapTestMapper extends Mapper<Object, Text, Text, NullWritable>{

        private Map<String,String> subjectMap =  new HashMap<>();//存放学科编号和中文的容器
        private Text text = new Text();

        @Override
        protected void setup(Mapper<Object, Text, Text, NullWritable>.Context context)
                throws IOException, InterruptedException {//会在map运行之前被调用
            //数据的位置
            String uri="hdfs://10.1.11.111:8020/user/mysql/subject_patent_map/part-m-00000";  
            Configuration configuration=new Configuration();  
            FileSystem fileSystem=FileSystem.get(URI.create(uri), configuration);
            //数据的读入操作
            FSDataInputStream in=null;  
            in=fileSystem.open(new Path(uri));  
            InputStreamReader isr = new InputStreamReader(in,"utf-8");
            BufferedReader br = new BufferedReader(isr);
            String line;
            //数据处理后放到subjectMap中
            while((line = br.readLine()) != null){
                String[] strs = line.split("'");
                if(strs.length > 1){//防止缺少areacode的unit_areacode进入
                    subjectMap.put(strs[0],strs[1]);
                }
            }
        }

        /**真正执行的代码我就不显示了*/
        @Override
        protected void map(Object key, Text value, Context context)
                throws IOException, InterruptedException {
            text.set(subjectMap.get("A61K36".substring(0, 3)));
            context.write(text, NullWritable.get());
        }
    }

那么在设置job的时候,就需要表明我们的过程是不需要执行Reduce的。Job的输出就不再看Reduce了,而是要看Map所以Key是Text,value是NullWritable。

public static void main(String[] args) throws Exception {
        Configuration conf = new Configuration(); // 启用默认配置
        String[] otherArgs = new GenericOptionsParser(conf, args)
                .getRemainingArgs();
        if (otherArgs.length != 2) {
            System.err.println("Usage: wordcount <in> <out>");
            System.exit(2);
        }
        conf.set("mapred.jar","C:\\Users\\GEKL\\Desktop\\a.jar");
        Job job = new Job(conf, "word count");// 定义一个job

        job.setJarByClass(NewWordCount.class);// 设定执行类
        job.setMapperClass(MapTestMapper.class);// 设定Mapper实现类

        //job.setCombinerClass(IntSumReducer.class);// 设定Combiner实现类
        //job.setReducerClass(IntSumReducer.class);// 设定Reducer实现类

        job.setOutputKeyClass(Text.class);// 设定OutputKey实现类,Text.class是默认实现
        job.setOutputValueClass(NullWritable.class);// 设定OutputValue实现类

        FileInputFormat.addInputPath(job, new Path(otherArgs[0]));// 设定job输入文件夹
        FileOutputFormat.setOutputPath(job, new Path(otherArgs[1]));// 设定job输出文件夹

        System.exit(job.waitForCompletion(true) ? 0 : 1);
    }
Hadoop Map/Reduce编程模型实现海量数据处理—数字求和-Hadoop学习 Hadoop Map/Reduce编程模型实现海量数据处理—数字求和,分别用不同的方法来使用Hadoop,进而了解Hadoop在数据处理的不同处理方式 阅读详情

相关推荐

Map Reduce

Map Reduce 学习

weixin_45512368的博客 1037

Mapreduce不设置reduce,只执行map的输出结果

在写MR程序时候,有时我们不需要reduce,比如对原始数据做Format等,这样我们再MR程序中就不需要写reduce函数,同样在main函数配置中也不需要reduce相关的配置信息 ,在MR执行的过程中,会为MR生成一个系统自带的reduce,这个reduce是系统为了保持框架的完整性自动调用的reduce函数,但这个函数并不做shuffle和数据拖去,生成的结果文件就是map的输出文件,也

yongjian_luo的专栏 1万+

Hadoop 中的 Map Join 和 Reduce Join

十八、Hadoop 中的 Map Join 和 Reduce Join

扛麻袋的少年的博客 406

hadoop MapReduce程序 不包含Reduce的设置

hadoop-0.20.2版本: public int run(String[] args) throws Exception { Configuration conf = getConf(); JobConf job = new JobConf(conf, TestSdfInputFormat.class);

放飞我心 2586

45、大数据处理利器:Hadoop与Map/Reduce技术详解

本文详细介绍了Hadoop及其核心组件Map/Reduce在大数据处理中的应用。从Hadoop的基本概念、Map/Reduce模型的工作原理,到HDFS分布式存储、集群管理,以及与R语言的集成工具RHadoop的使用方法,全面解析了Hadoop的技术体系。同时,还介绍了其他使用Hadoop的方式,如Segue和Hadoop流式处理,并探讨了性能优化、故障排除和未来发展趋势,帮助读者更好地理解和应用Hadoop技术。

yhn456789的博客 109

nnUnet代码解读--优化策略

优化策略 nnUNetTrainer def initialize_optimizer_and_scheduler(self): assert self.network is not None, "self.initialize_network must be called first" self.optimizer = torch.optim.Adam(self.network.parameters(), self.initial_lr, weight_decay=self.weight_

weixin_44858814的博客 3824

hadoop reducer为空(不需要reducer)

在写map reduce的过程中,可能不需要reducer操作,这种情况下这样设置即可: -mapper "python map.py" \ -reducer "cat" \ 即将-reducer设置为“cat”即可

qq_20488317的博客 1920

焦距与视差的关系及其对深度估计的影响

焦距在立体视觉中的作用至关重要,它直接影响视差的大小,从而影响深度估计的精度。焦距越长,视差差异越大,物体的深度估计就越精确。这一关系使得焦距长的相机在一些需要高精度深度估计的应用场景中更加优越。了解焦距与视差的关系,对于优化相机配置和提升深度估计精度具有重要意义。在实践中,选择合适的焦距对于获得精确的深度信息至关重要,特别是在自动驾驶、虚拟现实、三维重建等领域,精确的深度估计能够提供更好的用户体验和技术支持。

计算机科学与技术专业学生的成长之路 1671

NullWritable

NullWritable是Writable的一个特殊类,实现方法为空实现,不从数据流中读数据,也不写入数据,只充当占位符,如在MapReduce中,如果你不需要使用键或值,你就可以将键或值声明为NullWritable,NullWritable是一个不可变的单实例类型。 转载于:https://www.cnblogs.com/xiangyuguan/p/11043345.html...

weixin_30947043的博客 561

RK3588设备树节点实战:从零配置音频与显示模块(ES8388+DSI0)

本文详细介绍了在RK3588平台上配置音频编解码器ES8388和显示接口DSI0的设备树节点实战。通过具体案例拆解设备树节点的编写逻辑与调试技巧,包括音频路由与声卡配置、DSI控制器基础配置、视频通路路由配置以及电源管理与时钟树设计。文章还提供了调试工具与实战技巧,帮助开发者快速解决常见问题。

weixin_42525637的博客 351

基于传输门与传输管逻辑的全加器设计

全加器是指对输入的两个二进制数相加(A与B)同时会输入一个低位传来的进位(Ci-1),得到和数(SUM)和进位(Ci)。一位全加器可以处理低位进位,并输出本位加法进位。由于这种晶体管的漏极和源极完全可以互换使用,因此这种电路的输入端与输出端也可以互换,这就是具有信号传输双向特性的传输管。传输管的输入信号可以传输到输出端,同时输出端的信号也可以传输到输入端。半加器是指对输入的两个一位二进制数相加(A与B),输出一个结果位(SUM)和进位(C),没有进位的输入加法器电路,是一个实现一位二进制数的加法电路。

qq_40353731的博客 4381

hadoop中map到reduce的过程详解

对于Hadoop的MapReduce执行机制,主要分为两部分来处理数据,mapper和reducer阶段,这两个阶段中间有一个非常重要的shuffle过程,这个过程其实是mapreduce的核心部分,因为优化过程主要就是从shuffle处下手。系统将map输出作为输入传给reducer的过程(同时会排序)成为shuffle。shuffle是MapReduce的“心脏”,是奇迹发生的地方。 现就m

mm_bit的博客 9431

说说通用报表控件

我们已经开发有2款WINCC报表控件,一种是固定模板,一种是自定义模板。但是它们有个共同特点,就是数据都是来自WINCC的归档数据库。使用WINCC归档数据库的好处是不需要自己写脚本保存数据。但是有些情况下,我们需要自己保存数据,或者第三方系统通过数据表的方式给我们提供数据。那这样的话,我们之前的两款控件就不支持了。正好有个客户有类似需要,于是加了一天班写了个通用报表控件。之所以说是通用,是因为它可以插入任何支持.NET控件的组态软件中,比如WINCC、IFIX等。并且它不依赖于组态软件自己...

HwLib_的博客 3550

Hadoop之Map-Reduce

连续发3篇hadoop的文章,还真的有点累,但是在发表过程中又对其原理又有了比较清晰的了解了.感觉还是不错的。 Hadoop的第二大框架Map-Reduce,即分布式处理框架.总的来说它是对HDFS的具体实现。1:Map-Reduce原理:*把大文件分成很多个块,每一个块分别放在不同的节点上的 做一个map函数,可以被jobtracker分配到各个节点上运行 对分在机子上的数据进行map m

Watering_sea的专栏 903

python全栈入门到实战【基础篇 01】Python初识:定位、优势与发展历程

本文介绍了热门编程语言Python。它是解释型高级语言,具通用、入门友好、胶水型特点,以简洁易读为设计哲学。优势包括语法简洁高效、生态庞大、跨平台、社区活跃、应用广泛、门槛低。发展历经诞生(1989-1994,吉多创建,1994年1.0发布)、成长(版本迭代,3.0发布)、崛起(Web与大数据推动)、爆发(AI浪潮助推)及持续迭代阶段。

那些看似不起波澜的日复一日,会在某天让你看到坚持的意义 1万+

2023推免(夏令营+套实验室)面试总结(博文附问题汇总和参考答案)

2023推免(夏令营+套实验室)面试总结(博文附问题汇总和参考答案)

m0_51339444的博客 1804

彻底明白Hadoop map和reduce的个数决定因素

Hadoop map和reduce的个数设置,困扰了很多学习Hadoop的成员,为什么设置了配置参数就是不生效那?Hadoop Map和Reduce个数,到底跟什么有关系。首先他的参数很多,而且可能随着版本不同一些配置参数,会发生一些变化,但是只要我们搞懂核心问题,那么其它在变,我们都能确定map的个数和reduce的个数。 首先来说,我们通过配置,无论你说的什么配置,能否就...

等风等雨等你 3722

双目相机标定理论与编程实现

双目相机标定是计算机视觉中的重要任务,通过确定双目相机的内参和外参,可以实现立体视觉的深度感知和三维重建。通过使用OpenCV库提供的函数,我们可以方便地进行双目相机的标定工作。双目相机标定是计算机视觉中的重要任务,用于确定双目相机的内参和外参,以实现立体视觉的深度感知和三维重建。通过上述代码,我们可以获得左右相机的内参矩阵、畸变系数、旋转矩阵和平移矩阵等参数,从而完成双目相机的标定过程。使用双目相机采集一系列左右相机的图像,确保标定板在不同位置和角度下都能被双目相机拍摄到。函数来检测标定板的角点。

ByteKnight的博客 324

hadoop 一个Job多个MAP与REDUCE的执行

在hadoop 中一个Job中可以按顺序运行多个mapper对数据进行前期的处理,再进行reduce,经reduce后的结果可经个经多个按顺序执行的mapper进行后期的处理,这样的Job是不会保存中间结果的,并大大减少了I/O操作。 例如:在一个Job中,按顺序执行 MAP1->MAP2->REDUCE->MAP3->MAP4 在这种链式结构中,要将MAP2与REDUCE看成这个MAPRE

小桥 2712

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

Hadoop streaming运行python程序如何设置map和reduce的个数(python)

Hadoop Streaming给许多语言(java,scala,python,C等)提供了使用Hadoop和编写Mapreduce的接口。在实际工作中,我选择python来做大数据处理,在编写mapreduce作业时,经常遇到map和reduce的个数怎么设置,因为它们的个数决定着程序运行的效率和一些其它方面的因素(例如对于一个大的数据集,如果使用一个map来处理,很容易造成该节点的内存等不足)...

Never-Giveup的博客 2703

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

Python 的 map 和 reduce 和 Hadoop 的 MapReduce 有什么关系?

结论 先说结论,Python 的 map 和 reduce 是Python的内置函数,而 Hadoop 的 MapReduce 是一个计算框架。 两者之间没有直接的关系。但是他们的部分计算操作思想是类似的。 下面分别介绍下这三个内容。 Python的Map 下面是Python中Map类的定义(学过Java的同学不要将两者弄混,在Java中Map是一个存储键值的数据结构,相当于Python中的字典...

Miracle42的博客 611

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

Map-Reduce原理

Map-Reduce Map-Reduce是由Google在2004年提出的大数据并行编程架构,分为Map(映射)和Reduce(化简)两个步骤,因此得名。它隐藏并行化、容错、数据分布、负载均衡等细节,可以搭建在普通PC上,程序员可以很方便完成大数据并行编程。 并行运算的效率 假如使用1个处理器花费T1时长可以完成任务,而使用了p个处理器需要Tp时长。那么加速比为:S(Speeup) =

Focustc 6416

Hadoop--map-reduce原理

MapReduce的作业(job)是由客户端提交给Hadoop集群的。一个job包括了输入数据,MapReduce程序和配置信息。Hadoop将作业非为若干个任务(task)来执行,其中包括map任务和reduce任务。有两类节点和task的执行相关,一类是jobtracker,另外一类是tasktracker。jobtracker通过调度tasktracker上运行的任务来协调所有运行在系统上的作

上善若水,厚德载物 1172

hadoop一些基本知识——Hadoop简介(1):什么是Map/Reduce

Hadoop简介Hadoop就是一个实现了Google云计算系统的开源系统,包括并行计算模型Map/Reduce,分布式文件系统HDFS,以及分布式数据库Hbase,同时Hadoop的相关项目也很丰富,包括ZooKeeper,Pig,Chukwa,Hive,Hbase,Mahout,flume等.这里详细分解这里面的概念让大家通过这篇文章了解到底是什么hadoop:1.什么是Map/Reduce,看

u013488563的专栏 2742

漫画:从打牌到 map-reduce 工作原理解析

作者 |channingbreeze责编 | 仲培艺小史是一个非科班的程序员,虽然学的是电子专业,但是通过自己的努力成功通过了面试,现在要开始迎接新生活了。生活现场找...

优快云资讯 1909
上一篇: Hive 之 内部表和外部表区别
下一篇: hadoop 之 文件读取操作
CallMeJiaGu
博客等级 码龄12年 149粉丝 99原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值