草庐IT

java - Hadoop Mapper 中未调用设置方法

我运行一系列HadoopMapper/Reducers并获得电影ID列表。我使用MovieData文件来显示基于这些ID的电影名称。我正在使用如下的Mapper类。我看到setUp方法没有被调用,因为我没有看到print语句,而且当我尝试使用在load方法中加载的这个HashMap时,我也得到了一个Null异常。以下是代码。感谢任何指点。importjava.io.BufferedReader;importjava.io.FileNotFoundException;importjava.io.FileReader;importjava.io.IOException;importjava

java - Hadoop Mapper 填充了 MapOutputBuffer 对象,有没有更好的方法来跳过坏键?

我正在从事一个mapreduce项目,我无法事先保证我的映射器将始终获得可用的键值对。我尝试用这样的trycatchblock围绕相关代码publicvoidmap(LongWritableKey,Textvalues,Contextcontext)throwsIOException,InterruptedException{try{//Attemptprocesscontext.write(HKey,HValue);}}catch(Exceptione){//wasgiveninvalidvalue,dropitandmoveoncontext.nextKeyValue();e.pr

hadoop cp vs streaming with/bin/cat 作为 mapper 和 reducer

我是Hadoop的新手,如果/bin/cat用于mapper和reducer,我有一个关于hadoop复制(cp)与hadoop流的非常基本的问题。hadoop-输入-输出-mapper/bin/cat-reducer/bin/cat我相信上面的命令会复制文件(它与hadoopcp有什么不同?)或者如果我的理解有误请纠正我。 最佳答案 他们做同样的事情,但方式不同:hadoopcp将只调用JAVAHDFSAPI并将副本执行到另一个指定位置,这比流解决方案快得多。另一方面,hadoopstreaming(请参阅下面的示例命令)将启动m

java - streaming jar 找不到 HDFS 中的 Mapper 文件

我目前正在尝试让本地版本的Hadoop运行,但我有点卡住了。我使用以下教程进行设置:http://glebche.appspot.com/static/hadoop-ecosystem/hadoop-hive-tutorial.html现在,我想使用本教程执行一个简单的Mapreduce:http://www.michael-noll.com/tutorials/writing-an-hadoop-mapreduce-program-in-python/但是,我似乎对HDFS有一些问题,因为当我想运行以下命令时::libexecme$hadoopjar./share/hadoop/to

Python 映射减少 : Empty file from mapper

join2_mapper.py#!/usr/bin/envpythonimportsysshows=[]forlineinsys.stdin:line=line.strip()key_value=line.split(',')ifkey_value[1]=='ABC':ifkey_value[1]notinshows:shows.append(key_value[0])ifkey_value[1].isdigit()and(key_value[0]inshows):print('{0}\t{1}'.format(key_value[0],key_value[1]))样本i/pHourl

java - MapReduce 设计模式中的 Mapper 类和 Reducer 类

我是MapReduce的新手,我对这段代码中Mapper类和Reducer类的设计有一些疑问我熟悉MapReduce中的MapSideJoining,我了解到:publicstaticclassCustsMapperextendsMapper{publicvoidmap(Objectkey,Textvalue,Contextcontext)throwsIOException,InterruptedException{在这里,在上面的代码片段中我了解到我们将类扩展到Mapper类和作为Object是一把key,Text是一个值,因此map方法将此键值作为context的输入对象在这里作为

hadoop - 为 hadoop 设计 "mapper"和 "reducer"函数的功能?

我正在尝试为Hadoop设计映射器和缩减器。我是Hadoop的新手,我对映射器和缩减器应该如何为我的特定应用程序工作感到有点困惑。我的映射器的输入是一个大的有向图的连通性。它是一个2列输入,其中每一行都是一个单独的边缘连接。第一列是起始节点ID,第二列是每条边的结束节点ID。我正在尝试将每个起始节点ID的邻居数输出到一个2列文本文件中,其中第一列按起始节点ID递增的顺序排序。我的问题是:(1)输入已经设置好,每一行都是一个键值对,其中键是起始节点id,值是结束节点id。映射器是否只是简单地读入每一行并将其写出?这似乎是多余的。(2)排序是在mapper和reducer之间进行,还是排序

java - 将少量值从 Mapper 传递到 Reducer

如何将Mapper中收集的少量元数据传递给Reducer?在我的特定问题中,我只想传递两个long值,所以我不会为这些使用MultipleOutputFormat或MultipleOutputs。我尝试过的一些变体:(1)映射器context.getCounter("Countergroup","Counter").increment(1);reducercounter=context.getCounter("Countergroup","Counter").getValue();计数器不会定期更新,因此Reducer中的函数调用结果为0值。(2)映射器context.getConfi

hadoop - hadoop能否让mapper将部分数据发送给reducer,剩下的数据直接输出到HDFS?

正如标题所说,我有一个关于map-reduce的任务设计:经过思考,我认为只需要将部分数据(可能是10%的数据)送入reducer,剩下的数据直接输出到HDFS即可。然后最后,我只是合并了mapper和reducer的这两个输出文件(我必须得到一个关于这个总数据的统一文件或目录)。我认为,通过这样做,可以降低此任务运行的带宽成本。那么我的想法能实现吗?(我知道如何直接从mapper输出到HDFS,但这需要mapper既输出到HDFS又将数据发送到reducer) 最佳答案 一种解决方案是使用MultipleOutputs'swrit

hadoop - 如何在hadoop中设计具有两个输入的Mapper

我必须实现两个mapReduce作业,Mapper_2需要Reducer_1的输出。Mapper_2还需要另一个输入,即文本文件。如何使用这两个输入设计mapper_2?换句话说,如何在mapper_2中定义两个输入参数作为mapreduce中上一个作业的输出和一个文本文件? 最佳答案 据我了解,问题是您需要两个具有相同映射器的输入路径。我对吗?如果是这样,您可以使用:MultipleInputs.addInputPath(Job,TextInputPath,SomeInputFormat.class,Mapper_2.class)