草庐IT

reduce_ex

全部标签

python - Map Reduce 从一行中计算一个参数,然后计算第二个参数

假设我有一个满是行的日志文件:“a、b、c”,虽然这些是可以具有任何值的变量,但值的重复出现确实会发生,这就是本分析的目的。第一步映射所有'c'URL,其中'a'等于特定域,例如“stackoverflow.com”和c等于“stackoverflow.com/test/user/”之类的URL,我编写了一个正则表达式来完成此操作。第二步计数(减少)所有计数的c(URL),这样我就有了一个列表,其中包含每个URL的总计数。这很好用。第三步(尚未实现和此问题的主题)为第2步中计算的每个URL查找所有b(浏览器名称)。返回一个关系列表,例如字典ADT或JSON,如下所示:[{"url":S

hadoop - Hadoop Map Reduce 中的 TSV 输入

我正在尝试对TSV数据集运行一个简单的map缩减操作,我对在尝试一个简单的map操作时出了什么问题感到有点困惑。以下是我对sampleWordCountproblem的修改map类的。publicstaticclassMapextendsMapReduceBaseimplementsMapper{privateTextnode=newText();publicvoidmap(LongWritablekey,Textvalue,OutputCollectoroutput,Reporterreporter)throwsIOException{Stringline=value.toStrin

search - 什么是搜索中的 map 和 reduce 阶段

我想用hadoop实现一个简单的搜索引擎。所以我使用hadoopstreamingapi和bash创建了一个倒排索引。输出的文件如下:ab(7441)1abbrevi(1221)1abil(511)(771)(7381)3abl(991)(1321)(5361)(5811)(6951)(7631)(9081)(9141)(9861)(11142)10ablat(822)(2742)(5537)(5871)(10653)(10962)(10977)(10983)(10Sorryif994)(11004)(11013)(12263)(12413)(12791)14about(271)(32

java - Hadoop Reducer - 在新 API 中获取输入目录?

在我的输入目录中,我有一个要处理的文件列表以及一个元数据文件。在outputreducer端,我想索引到这个文件并将额外的元数据添加到输出中。如何获取输入目录?在旧的API中,可以这样做:context.getConfiguration().get("map.input.dir")新的API允许映射器执行此操作:(FileSplit)context.getInputSplit()).getPath()但是Reducer上下文没有这个功能。此外,对于简单的任务来说,进行连接似乎有点过分了。 最佳答案 Reducer在Mappers的输

hadoop - 跨节点的数据移动是否发生在 Reducer 阶段? MapReduce

这是一道概念题。当映射器函数完成时,它会在本地节点上发出中间键值对。如果假设Jobtracker选择reducer从不同的节点运行,数据移动是否发生在节点之间?如果是这样,请告诉我只有在所有Mapper阶段完成后,reduce阶段才会开始。或者是否会有任何后台进程在单个映射器完成后立即运行,这会将数据移动/复制到Reducer节点?如果这个问题很愚蠢,请忽略:( 最佳答案 IfsupposeTheJobtrackerchoosesreducertorunfromdifferentnode,dotheDatamovementhappe

hadoop - 自定义分区程序将单个 key 发送到多个 reducer ?

如果我只有一把key。我可以避免它只被发送到一个reducer(并将它分发到多个reducer)吗?我知道我可能需要第二个mapreduce程序来组合reducer输出?这是一个好方法吗?或者请告诉我是否有更好的方法? 最佳答案 我也遇到过类似的情况。我所做的是这样的:intnumberOfReduceCalls=5IntWritableoutKey=newIntWritable();Randomrandom=newRandom();publicvoidmap(LongWritablekey,Textvalue,Contextcon

java - Hadoop:在运行时更改 reducer 的数量

假设以下场景:一组相关作业被发送到hadoop。Hadoop执行第一个,然后执行依赖于第一个的第二个,依此类推。作业是使用JobControl一次提交的(请参见下面的代码)。使用Hadoop2.x(在Java中),是否可以在运行时更改作业的reducer数量?更具体地说,如何在执行作业1后更改作业2中的reducer数量?还有,有没有办法让hadoop通过估计map输出自动推断出reducer的数量?它总是需要1,而且我找不到更改默认设置的方法(除非我自己明确设置数字)。//1.createJobControlJobControljc=newJobControl(name);//2.a

python - 如何进行 3 阶段 Map Reduce 流式处理?

我是hadoop的新手。目前我有一个映射器、一个缩减器和一个组合器。我可以做catfile|映射器.py|reducer.py|combiner.py来产生结果。并且减少阶段是令人尴尬的并行化。那么,鉴于我有一个hadoop集群,谁能告诉我如何将它放入hadoop流中? 最佳答案 hadoop流支持标准输入/标准输出。所以你可以重用你的mapper.py、reducer.py和combiner.py考虑签名:$HADOOP_HOME/bin/hadoopjar$HADOOP_HOME/hadoop-streaming.jar\-in

hadoop - 在另一个映射器中使用 reducer 的输出

我正在开发一个mapreduce应用程序,我必须在其中获取月份开始和月份结束数据(不一定是月份的第一个或最后一个日期,因为它们可能是假期或周六至周日)所以我将月份提取为键和相应的日期作为值,以便按月聚合,我可以提取最大日期和最小日期。现在基于这个日期我需要使用文件的其他属性。所以我想将一个reducer的输出定向到另一个映射器。第二个映射器也将文件作为输入,因此我可以比较日期并相应地处理数据。有什么办法可以做到吗?? 最佳答案 在较高层次上,解决此问题的一种方法是实现两个依次运行的MapReduce作业:作业1获取输入数据集,并使用

java - Map阶段和Reduce阶段进度如何计算

我想知道在HadoopMapReduce中运行作业时,map-stage和reducestage-progress是如何计算的。我进入JobClient.java寻找线索,我认为JobStatus.java存储了所有这些信息,但我找不到百分比是如何计算/更新的。 最佳答案 来自org.apache.hadoop.mapred.JobInProgress#updateTaskStatus:doubleprogressDelta=tip.getProgress()-oldProgress;if(tip.isMapTask()){this