函数式编程与Filter-MapReduce

5.5 Map-Reduce(映射-归约)模型 Java8引入的流即java.util.stream.Stream,被称为具有函数式编程风格。其流水线操作就属于本章的主题:封闭性操作。对流的认识和把握,可以溯源于映射-归约模型。 Map-Reduce/映射-归约,是一种借鉴信号处理过程、对大规模数据进行处理的模型。它包含3方面: 对于一个数据序列,. 对(数据序列的)每一个数据进行转换,Map-Reduce中的Map,指从一个数据序列得到另一个数据序列。转换操作,包括函数映射/map、过滤/filter等操作; 对这个数据序列进行归约。Map-R 阅读详情

什么是MapReduce?

MapReduce来自Hadoop, 但是却被推广到所有领域, 它的中文名叫映射规约, 这个翻译非常讲究, 也非常准确, 但是我还是想把MapReduce扩展成Filter-MapReduce, 即过滤-映射-规约 三步骤,这个思考过程对我的编程有很大帮助.

MapReduce是获取对象列表并对列表中的每个对象(即map)运行某些操作以生成新列表或计算单个值(即reduce)的过程。通过提供一个小样本可以最好地解释这个概念。  

假设我们有这些数据显示一个汽车经销商在一段时间内的汽车销售情况。

(福特,福特,福特,马自达,雪佛兰,雪佛兰)

如你所见,这位汽车经销商售出3辆福特,1辆马自达和2款雪佛兰。我们想到了这一点,但计算机会分两步完成:映射然后减少。

映射步骤获取列表中的每个元素并对其运行一些操作以生成要放入新列表的新项目。由于我们想要计算汽车销售额,我们将每个项目的数字1添加到产品列表中:

((Ford,1),(Ford,1),(Ford,1),(Mazda,1),(Chevrolet,1),(Chevrolet,1))

现在我们做一个reduce操作将类似的项放在一起,然后将它们相加以产生这个:

((Ford,3),(Mazda,1),(Chevrolet,2)

现在我们可以简单地阅读制造商的汽车销售。

为什么[ 过滤--映射--规约 ]在业界迅速发展  

这个相对简单的想法广泛应用于企业。其背后的软件使得解决大规模数据集的复杂问题变得更加容易,从而有助于促进其增长。

MapReduce正在迅速发展,因为Apache Hadoop和Spark并行计算系统允许程序员使用mapReduce在大型分布式数据集上运行模型,并使用高级统计和机器学习技术进行预测,查找模式,发现相关性等。

这使业务和其他组织可以运行计算:

  • 确定产生最高利润的产品的价格。
  • 准确了解他们的广告效果如何以及他们应该在哪里花费广告费用。
  • 做长距离天气预报。
  • 挖掘网络点击次数,从零售商处购买的销售记录以及Twitter趋势主题,以确定公司在即将到来的季节应该生产哪些新产品。

在mapReduce之前,进行这种计算会很困难。现在程序员可以相对轻松地解决这些问题。数据科学家已将其复杂算法编码为框架,以便常规程序员可以使用它们。公司不再需要整个博士科学家部门来建模数据,他们不需要大型超级计算机来处理大量数据,因为mapReduce运行在低成本商用机器网络上。

Ecmascript对MapReduce的支持

大数据行业提供的新理念必然渗透到了轻量级数据领域的编程语言, 比如著名的ecma就在ES6以上对Array对象的原型上提供了filter, map, reduce方法, 非常非常非常好用?

回头看下第一张图:

filter放在刚开始执行:因为过滤掉一些数据可以减少计算量,

map其后, 将列表中每个元素按照一定的规则映射成成另一个元素,

reduce是列表处理的终极大招, 遍历所有元素, 聚合成一个元素:

为啥很多人埋怨JavaScript的数组为啥没有sum和avg方法....我们明明有reduce啊啊, 自己定义一下费多大事!

mongodb对MapReduce的实现(和扩展)

大规模解决问题

什么使这成为技术突破是两件事。首先,我们可以大规模处理非结构化数据,这意味着数据不易融入关系数据库。其次,它采用数据科学的工具,让它们在分布式数据集上运行。过去,这些只能在一台计算机上运行。   

mapReduce工具的相对简单性及其功能及其在商业,军事,科学和其他问题上的应用解释了为什么mapReduce增长如此之快。随着越来越多的人开始了解如何将这些工具应用于他们的情况,这种增长只会增加。

Python专题——五分钟带你了解map、reduce和filter 今天是Python专题第6篇文章,给大家介绍的是Python当中三个非常神奇的方法:map、reduce和filter。 不知道大家看到map和reduce的时候有没有什么感觉,如果看过之前我们大数据系列介绍MapReduce文章的同学,想必有些印象。这个MapReduce不是一个分布式的计算方法么,怎么又变成Python中的方法了?其实原因很简单,因为Python是一门很年轻的语言,它在发展的过... 阅读详情

相关推荐

函数式编程语言和MapReduce

该文档简要介绍了函数式编程语言和MapReduce的相关知识。

day68 Spark core 安装 五大特性 有的没的

文章目录一、基本容器1、Tuple零碎 I know, i know 地球另一端有你陪我 一、基本容器 Scala 中的容器又类似于 Python 中的容器 Tuple List Set Map 注意的是,四个基本容器全是不可变的 1、Tuple 零碎 本地(local)运行 Spark 项目需要在任意位置导入一个新建一个 hadoop / bin 路径 bin 下面塞一个 winutils.exe,在环境变量中添加 hadoop 到 HDOOP_HOME 可以回避一个报

qq_41464008的博客 1254

Java函数式编程(七):MapReduce

主要介绍了Java函数式编程(七):MapReduce,本文是系列文章的第7篇,其它文章请参阅本文底部的相关文章,需要的朋友可以参考下

Map Reduce - the Free Lunch is not over?

原文出处: http://www.mengyan.org/blog/archives/2006/11/15/138.html 微软著名的C++大师Herb Sutter 在2005年初的时候曾经写过一篇重量级的文章:”The Free Lunch Is Over: A Fundamental Turn Toward Concurrency in Software “,预言OO之后软件开发将要面临的...

wind_bell27的专栏 269

用5毫欧采样电阻实现高精度电流检测?数字可调电源控制板的硬件设计陷阱

本文深入探讨了在数字可调电源控制板设计中,如何利用5毫欧采样电阻实现高精度电流检测。从微小信号放大电路设计、采样电阻布局与热管理,到电源切换与电池管理电路优化,提供了全面的硬件设计解决方案和实用技巧,帮助工程师规避常见设计陷阱,提升系统性能。

wdx0123456的博客 1031

自然语言处理:稀疏向量表示

稀疏向量表示是指运用特定的方法和技术,将数据(如文本、图像、信号等)转化为向量形式,且该向量具有大部分元素值为零,仅少数元素值非零的特征,以此来实现对数据的高效存储、处理和分析。

老赵爱学习的博客 1444

孤尽T31项目Day3

孤尽T31项目Day3 Mysql设计规范 一、建表规约 - 表、字段的命名 1、必须使用小写字母或数字。 2、禁止出现数字开头。 3、禁止两个下划线中间只出现数字。 4、不使用复数名词。 5、禁用保留字。 6、是与否概念的字段,必须使用is_xxx的方式命名。 - 数据类型 1、小数类型为decimal。 2、货币数据使用最小货币单位,数据类型为bigint。 3、字符串长度几乎相等使用char。 4、varchar长度不要超过5000. - 表必备三字段 id、create_time、update_ti

StoneChan_的博客 339

mapbox 从入门到精通 - 目录

欢迎大家来到gis分享者的《mapbox 从入门到精通》专栏。博主列出学习大纲,如果有什么问题,欢迎留言。

我哎GIS博客 5851

map()、reduce()、filter()三者的区别

①如果需要数组 请使用 .map( ) map方法接受一个匿名函数为参数 这个匿名函数又有三个参数 (成员 索引 被操作数组本身) 第一个参数是当前数组中的第几个成员 第二个参数是当前数组成员在数组中的索引,就是第几个 第三个参数是调用map方法的那个数组本身 <script> var _arr = [ { age: 11, name: "aaa" }, { age: 22, name: "bbb" }, { age: 33, name...

weixin_45362994的博客 403

【OpenFOAM】-olaFlow-算例10-wavemakerTank

采用 Flap和Piston两种方式的动网格进行造波

ou_no的博客 2169

昇腾AI原生创新算子挑战赛(S1赛季)复盘-LessEqual算子

【代码】昇腾AI原生创新算子挑战赛(S1赛季)复盘-LessEqual算子。

william_myq的博客 510

函数式编程事务Java,浅谈函数式编程

1. 前言一个风和日丽的下午,我看着日常看代码做重构迁移,看到这么段代码:突然,我看到了这样的代码:private void getTopicsDiskSizeForSomeBroker(int brokerID, AdminClient admin, Map topicsSizeMap) throws ExecutionException, InterruptedException {Descr...

weixin_28907839的博客 410

手把手教你学RDMA驱动开发专栏--第7章 队列对(QP)与数据传输实现​7.3 完成队列(CQ):事件通知机制与轮询/中断模式

本章详细探讨了RDMA驱动中完成队列(CQ)的事件通知机制,重点分析了轮询与中断两种模式的实现原理及优化策略。CQ作为操作结果的报告载体,其核心功能包括结果反馈、事件通知和资源同步。轮询模式通过主动查询实现低延迟,适合高性能场景;中断模式通过被动通知节省CPU资源,适用于低频事件处理。驱动实现需考虑CQ溢出防护、多QP共享同步等关键问题,并提供事件通道机制将CQE传递给用户态。通过对比两种模式的优缺点及适用场景,揭示了RDMA系统在性能与资源间的权衡机制。

MHD0815的博客 397

【Julia入门】4.7 map-reduce等函数式编程——《Julia全栈工程师》

Julia作为一种灵活的编程语言,提供了丰富的函数式编程工具来处理和转换集合中的数据。mapreducefilter等函数是函数式编程中常见的概念,而Julia通过内置函数和简洁的语法使得这些操作变得简单高效。虽然Julia没有直接的accumulatemapreducereplace和findfirst函数,但可以通过组合现有函数和使用列表推导式等方式来实现相似的功能。这种灵活性和表达能力使得Julia成为处理数据和进行函数式编程的强大工具。👨‍💻博主Python老吕评论。

Python老吕的博客 947

Winform从入门到精通(21)——ProgressBar(史上最全)

本介绍ProgressBar控件的详细用法,包含所有属性、事件,绝对史上最全!

qq_34059233的博客 3350

实战|2026美团&大众点评餐饮数据抓取:Playwright/Selenium反爬全攻略

核心结论:2026年美团&大众点评的反爬核心是“多维度风控”,需组合使用“住宅IP+设备指纹伪装+真人行为模拟+动态验证处理”,Playwright是最优工具,Selenium仅作为补充。效率优化:单机爬取速度建议控制在“每小时500-800条”,避免高频请求触发风控;分布式爬取需确保每个节点使用独立住宅IP,且行为轨迹不一致。扩展方向集成WASM解密工具,破解2026年美团的Token加密;用AI识别动态点选验证,提升验证通过率;对接大数据平台,对抓取的餐饮数据进行可视化分析。

专注于Python爬虫开发,分享爬虫技巧、项目实战与反爬经验,使用Scrapy、BeautifulSoup等工具,解决数据抓取难题。 2466

后缀式求值 (20分)pta_现代C++函数式编程

导读: 本文作者从介绍函数式编程的概念入手,分析了函数式编程的表现形式和特性,最终通过现代C++的新特性以及一些模板云技巧实现了一个非常灵活的pipeline,展示了现代C++实现函数式编程的方法和技巧,同时也体现了现代C++的强大威力和无限可能。1概述函数式编程是一种编程范式,它有下面的一些特征:函数是一等公民,可以像数据一样传来传去高阶函数递归pipeline惰性求值柯里化偏应用函数C++98...

weixin_39980711的博客 335

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

Python函数式编程之pipeline——很酷有没有

Pipeline pipeline 管道借鉴于Unix Shell的管道操作——把若干个命令串起来,前面命令的输出成为后面命令的输入,如此完成一个流式计算。(注:管道绝对是一个伟大的发明,他的设哲学就是KISS – 让每个功能就做一件事,并把这件事做到极致,软件或程序的拼装会变得更为简单和直观。这个设计理念影响非常深远,包括今天的Web Service,云计算,以及大数据的流式计算等等) 比如,我...

python学习者的博客 4667

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

PHP函数式编程

什么是函数式编程 与面向对象编程(Object-oriented programming)和过程式编程(Procedural programming)并列的编程范式。 最主要的特征是,函数是第一等公民。 强调将计算过程分解成可复用的函数,典型例子就是map方法和reduce方法组合而成 MapReduce 算法。 只有纯的、没有副作用的函数,才是合格的函数。 PHP中的函数 例子: $grad...

weixin_34281477的博客 205

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

Python函数式编程——学习笔记

函数式编程的一个特点就是,允许把函数本身作为参数传入另一个函数,还允许返回一个函数! 1、 函数本身也向可以赋值给变量,变量就具有了函数的功能,即:变量可以指函数。 >>> f = abs >>> f >>> f = abs >>> f(-10) 10 函数名也可以被赋值为一个数,如abs = 10 这时abs就不是求绝对值的函数了,要想恢复为函数,要用del abs 2、内置函数都是

薛倩的专栏 897

《编程机制探析》第十七章 函数式编程

《编程机制探析》第十七章 函数式编程 当我们能够像掌握循环一样熟练地掌握递归之后,我们就可以正式向函数式编程进军了。当然,即使我们还没有熟练掌握递归,我们还是可以向函数式进军。我们可以在学习函数式编程的过程中,逐步习惯递归的写法。 函数式编程并非主流编程模型,函数式语言亦非主流编程语言。但我们在描述某些具体问题时,不可避免地要涉及到一些代码。本书会尽量选择有代表性的函数式语言。本书的选择是...

buaawhl的专栏 851

Julia: reduce 、mapreduce、filter

一、reduce 、mapreduce\filter! julia> reduce(*,2,[1,2,3]) #2*[1*2*3] 12 julia> reduce(/,2,[1,2,3]) ###猜测:2/([1/2/3])=12 12.0 julia> reduce(+,2,[1,2,3]) ###猜测:2+([1+2+3])=8 8 julia> reduce(-,2,[1,2

代码过客 1292

Lecture 25: Map, Filter, Reduce

Reading 25: Map, Filter, Reduce1 Definition of MapReduceMap/Filter/Reduce: A design pattern that substantially simplifies the implementation of functions that operate over sequences of elements. Funct

TecLand 506

java8 手把手教你学会写lambda表达式

Java8发布已经有一段时间了,这次发布的改动比较大,很多人将这次改动与Java5的升级相提并论。Java8其中一个很重要的新特性就是lambda表达式,允许我们将行为传到函数中。想想看,在Java8 之前我们想要将行为传入函数,仅有的选择就是匿名内部类。Java8发布以后,lambda表达式将大量替代匿名内部类的使用,简化代码的同时,更突出了原来匿名内部类中最重要的那部分包含真正逻辑的代码。尤其...

杜海的博客 196

python高阶函数_python高阶函数

广告关闭腾讯云11.11云上盛惠 ,精选热门产品助力上云,云服务器首年88元起,买的越多返的越多,最高返5000元!什么是高阶函数2.python中有哪些常用的高阶函数什么是高阶函数? 在了解什么是高阶函数之前,我们来看几个小例子。 我们都知道在 python 中一切皆对象,函数也不例外。 比如求绝对值函数 abs,我们可以用一个变量 f 指向 abs 函数,那么当调用 f() 的时候可以得到和 ...

weixin_39728124的博客 337
上一篇: 自定义http头部的应用场景
下一篇: Material Design Component 4 Web 框架推送
xosg
xosg 领域专家: 网络协议与安全技术领域 领域专家: 网络协议与安全技术领域
博客等级 码龄9年 1986粉丝 864原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

xosg

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值