首页 文章 精选 留言 我的

精选列表

搜索[安全框架],共10000篇文章
优秀的个人博客,低调大师

MapReduce框架Partitioner分区方法

前言:对于二次排序相信大家也是似懂非懂,我也是一样,对其中的很多方法都不理解诶,所有只有暂时放在一边,当你接触到其他的函数,你知道的越多时你对二次排序的理解也就更深入了,同时建议大家对wordcount的流程好好分析一下,要真正的知道每一步都是干什么的。 1.Partitioner分区类的作用是什么?2.getPartition()三个参数分别是什么?3.numReduceTasks指的是设置的Reducer任务数量,默认值是是多少?扩展:如果不同类型的数据被分配到了同一个分区,输出的数据是否还是有序的? 在进行MapReduce计算时,有时候需要把最终的输出数据分到不同的文件中,比如按照省份划分的话,需要把同一省份的数据放到一个文件中;按照性别划分的话,需要把同一性别的数据放到一个文件中。我们知道最终的输出数据是来自于Reducer任务。那么,如果要得到多个文件,意味着有同样数量的Reducer任务在运行。Reducer任务的数据来自于Mapper任务,也就说Mapper任务要划分数据,对于不同的数据分配给不同的Reducer任务运行。Mapper任务划分数据的过程就称作Partition。负责实现划分数据的类称作Partitioner。 Partitoner类的源码如下: package org.apache.hadoop.mapreduce.lib.partition; import org.apache.hadoop.mapreduce.Partitioner; /** Partition keys by their {@link Object#hashCode()}. */ public class HashPartitioner<K, V> extends Partitioner<K, V> { /** Use {@link Object#hashCode()} to partition. */ public int getPartition(K key, V value, int numReduceTasks) { //默认使用key的hash值与上int的最大值,避免出现数据溢出 的情况 return (key.hashCode() & Integer.MAX_VALUE) % numReduceTasks; } } HashPartitioner是处理Mapper任务输出的,getPartition()方法有三个形参,源码中key、value分别指的是Mapper任务的输出,numReduceTasks指的是设置的Reducer任务数量,默认值是1。那么任何整数与1相除的余数肯定是0。也就是说getPartition(…)方法的返回值总是0。也就是Mapper任务的输出总是送给一个Reducer任务,最终只能输出到一个文件中。 据此分析,如果想要最终输出到多个文件中,在Mapper任务中对数据应该划分到多个区中。那么,我们只需要按照一定的规则让getPartition(…)方法的返回值是0,1,2,3…即可。 大部分情况下,我们都会使用默认的分区函数,但有时我们又有一些,特殊的需求,而需要定制Partition来完成我们的业务,案例如下: 对如下数据,按字符串的长度分区,长度为1的放在一个,2的一个,3的各一个。 河南省;1 河南;2 中国;3 中国人;4 大;1 小;3 中;11 这时候,我们使用默认的分区函数,就不行了,所以需要我们定制自己的Partition,首先分析下,我们需要3个分区输出,所以在设置reduce的个数时,一定要设置为3,其次在partition里,进行分区时,要根据长度具体分区,而不是根据字符串的hash码来分区。核心代码如下: public static class PPartition extends Partitioner<Text, Text>{ @Override public int getPartition(Text arg0, Text arg1, int arg2) { /** * 自定义分区,实现长度不同的字符串,分到不同的reduce里面 * * 现在只有3个长度的字符串,所以可以把reduce的个数设置为3 * 有几个分区,就设置为几 * */ String key=arg0.toString(); if(key.length()==1){ return 1%arg2; }else if(key.length()==2){ return 2%arg2; }else if(key.length()==3){ return 3%arg2; } return 0; } } 在运行Mapreduce程序时,只需在主函数里加入如下两行代码即可: job.setPartitionerClass(PPartition.class); job.setNumReduceTasks(3);//设置为3

优秀的个人博客,低调大师

产品经理能力框架图

【大咖・来了 第7期】10月24日晚8点观看《智能导购对话机器人实践》 点击下载高清大图(图片来源:天下网商) 随着行业发展,产品经理这个群体在IT行业也越来越受到关注,各种产品交流学习组织蓬勃兴起,作为其中的一员,一直以来就想写写自己对于产品经理这一角色的认识。 俗话说,一个成功的男人身后必然有一个默默的女人,那么一款产品背后是否也有一位潜心学习不断专研的产品经理呢?答案是肯定的,而且经常性的还不只是一位产品经理在支持着一款成功的产品。 业内对于产品经理能力模型的归纳也并不鲜见,因此我只是从个人理解的层面去讲述这些能力,我个人主要倾向于把产品经理能力分为两大部分:A、产品能力;B、管理能力。 A、产品能力 一、工具性能力 产品经理对产品负责,相应的产品能力必须是首要的能力,而在这些具体的素质里面,工具性能力又堪称基础性能力,在一个产品策划的生命周期里面,最常见的工具一般有以下几种:word、ppt、mindmanager、visio、axure、excel。 1、Word、excel和ppt,产品经理在策划一款产品的过程中,往往需要同多部门进行沟通协调,于是撰写文档以提高沟通效率便成为一项重要能力,无论是撰写产品需求文档还是市场需求文档、分析后期统计数据都需要熟练使用office系列文件。 2、Mindmanager,作为常用的头脑风暴软件,mindmanager便于产品经理更好的梳理产品管理和逻辑,对于理清产品思路具有重要意义,特别是在绘制产品roadmap其方便快捷的操作可以让产品经理绘制出结构和逻辑性都较好的展示图表。 3、Visio,visio作为一款优秀的流程软件,对于产品经理梳理产品内在逻辑和用户操作流程具有重要意义,特别是在产品文档撰写过程 中,visio绘制的用户操作流程图可以帮助工程师更好理解产品逻辑从而实施产品开发。Visio丰富的插件还可以用户绘制ueser case,方便产品项目组人员更好的理解用户,从而指导产品设计。 4、Axure,近年来axure凭借其优秀和交互能力和良好的操作性开始逐渐取代visio用于原型绘制,原型绘制作为产品设计的重要一环使得axure的使用能力也成为产品经理的标配能力之一。 二、产品感 “产品感”,一词来源于前辈郭子威,***次看到这个词的时候我就眼睛一亮,当时看到的想法就是:bingo,这个词才是我心中产品经理需要的核心能 力、一个优秀的产品经理必须对于产品敏感,而这种敏感性就来源于良好的产品感。产品经理是一个综合性角色,即需要有开阔的视野,又必须时刻关注细节,而这 些都包含在产品感里面。 a、规划力 这是一个产品经理较高层面上的能力,而具备这种能力的产品经理,通常会具备很多思想家的特质。从产品外部体系上,规划力代表了产品经理对整个价值市场的认 同,对企业产品线的布局,对自身产品的定位以及对每一款产品的发展思路。当然,对于大部分产品经理而言,战略层面的东西可能还接触不到,特别是对于大型公 司,决策层对于战略的考虑会大大多于产品经理,而产品经理在这样的情况下对于战略的执行多于对战略的思考。 b、设计力 这里所说的设计能力并不单指对于产品原型的设计,而更大不一部分在于是否能够根据公司战略及用户需求找到***的契合度,规划出即满足公司商业需求又符合市场定位和用户需求的能力。包括产品远景规划和近期的功能规划都属于设计力的范畴。 三、商业感 一个优秀的产品经理必须具有关注整个宏观市场环境的视野和能力,虽然在现实中大部分产品经理依旧在做执行层面的很多问题,对于大环境的关注可能在产 品总监或更高领导层面。但是对于一个产品经理的长期成长而言,对于整个大市场环境的关注不但可以使产品经理具有更好的产品视野,也会让产品经理在产品设计 的过程中更加敏锐,可以更好的对于产品远景规划作出正确的判断。 B、管理能力 一、自我管理能力 如果用足球比喻产品各个环节的职务角色,产品经理应该是最适合的中场球员,在一场球赛中,中场对于组织进攻,协调防守都具有核心意义。产品经理作为 一个协调性角色,对于前方需要协调包括BD、市场、销售在内的各个角色,对于后方又要组织协调好UED、程序等,另外还必须承受来自于用户的指责和质疑, 面临的压力可想而知。因此从个人素质上讲一个善于调节情绪,能够自我释放的产品经理才能经的起考验。 二、时间管理能力 产品经理在整个产品生命周期中都扮演者核心角色,并且由于时刻需要针对不同需求去协调不同的部门,产品经理总是最活跃产品角色,既要处理外部问题又 要时刻紧盯产品的设计,是否具有良好工作安排协调能力对于产品经理正常完成工作具有重要意义,产品经理最怕跟各部门陷入无休止的扯皮而疲于顾及产品的核心 设计工作。 三、知识管理能力 日新月异对于互联网行业来说是***的形容,如果你不关注市场,关注新技术,说不定某天起床的时候你就会发现自己已经跟不上时代的需求。而良好的学习 能力对于产品经理而言将是保持创新活力的基础,面对不断的新技术、新产品产品经理不能目瞪口呆,而应觉得理所当然;其次产品经理本身是综合性角色,对于市 场研究、用户调研、产品策划、开发技术、品牌管理、项目管理、心理学、设计科学都必须有所涉猎。只有具有综合的能力,才能立于各部门的沟通中游刃有余。 四、产品管理能力 产品经理必须对整个产品生命周期负责,从前期产品策划中协调各种资源进行开发设计开发,跟进产品上线。到产品上线后的运营推广,产品经理都必须予以 关注,以便协调不同的部门安排工作。同事在运营中对于来自各方需求以及市场的新变化都必须时刻关注以便安排产品的迭代更新。产品经理对于一款产品来说就是 既当爹又当妈。 五、团队管理能力 1、沟通能力 产品经理对于需求的实现都必须依赖技术和UED部门进行,因此良好的无授权领导力成为是否完成工作的主要条件,因此产品经理必须是一个活力角色,只有这样才能调动各部门投入产品设计和开发,从而形成一个核心的产品项目团队,产品经理不能孤军奋战。 2、执行能力 产品经理的执行能力不但指个人范围内的工作情况,也包括协调程序、UED部门投入工作的能力,当然这一点又必须依赖于良好的沟通能力。 3、另外产品经理也必须肩负一定的产品团队培养能力,使得产品梯队具有良性的接力效应,从而必须人才青黄不接,导致项目不能正常完成。 来源:http://www.minijuly.com/?p=830

资源下载

更多资源
Nacos

Nacos

Nacos /nɑ:kəʊs/ 是 Dynamic Naming and Configuration Service 的首字母简称,一个易于构建 AI Agent 应用的动态服务发现、配置管理和AI智能体管理平台。Nacos 致力于帮助您发现、配置和管理微服务及AI智能体应用。Nacos 提供了一组简单易用的特性集,帮助您快速实现动态服务发现、服务配置、服务元数据、流量管理。Nacos 帮助您更敏捷和容易地构建、交付和管理微服务平台。

Spring

Spring

Spring框架(Spring Framework)是由Rod Johnson于2002年提出的开源Java企业级应用框架,旨在通过使用JavaBean替代传统EJB实现方式降低企业级编程开发的复杂性。该框架基于简单性、可测试性和松耦合性设计理念,提供核心容器、应用上下文、数据访问集成等模块,支持整合Hibernate、Struts等第三方框架,其适用范围不仅限于服务器端开发,绝大多数Java应用均可从中受益。

Rocky Linux

Rocky Linux

Rocky Linux(中文名:洛基)是由Gregory Kurtzer于2020年12月发起的企业级Linux发行版,作为CentOS稳定版停止维护后与RHEL(Red Hat Enterprise Linux)完全兼容的开源替代方案,由社区拥有并管理,支持x86_64、aarch64等架构。其通过重新编译RHEL源代码提供长期稳定性,采用模块化包装和SELinux安全架构,默认包含GNOME桌面环境及XFS文件系统,支持十年生命周期更新。

WebStorm

WebStorm

WebStorm 是jetbrains公司旗下一款JavaScript 开发工具。目前已经被广大中国JS开发者誉为“Web前端开发神器”、“最强大的HTML5编辑器”、“最智能的JavaScript IDE”等。与IntelliJ IDEA同源,继承了IntelliJ IDEA强大的JS部分的功能。

用户登录
用户注册