草庐IT

python - Hadoop Streaming "comparator.options"未被尊重

我有一个python映射器和缩减器,我正在使用它和Hadoop流式API。在命令行上,这些脚本可以正常工作并执行预期的工作。我有一个NASA网络访问日志示例,您可以在此处看到它已正确处理和排序。tail-n10NASA_access_log_Jul95|./mapper.py|sort|./reducer.py|sort-r-k1,14163.205.53.141tornado.umd.edu在mapreduce作业中尝试相同的操作时,排序没有得到遵守。hadoopjar/usr/lib/hadoop-0.20-mapreduce/contrib/streaming/hadoop-st

Hadoop Reducer 执行重现

所以映射器只在包含给定数据block的给定从节点上执行一次,对吗?但是Reducer可能会执行多次,因为同一个键可能来自许多Mapper节点,对吗?此外,对于单个MapReduce作业,每个Mapper都会进行Shuffle和Sort是否正确? 最佳答案 一般来说,我认为说Mapper/Reducer被执行了多少次是不合适的,因为它们广泛分布在不同的节点中,由MRv1中的JobTracker或MRv2中的ResourceManager调度。但希望我下面的回答可以帮助您更好地理解。问:“所以映射器只在包含给定数据block的给定从节点

Hadoop 组合器 : Using same reducer code as combiner in a word count mapreduce program?

这个问题特别来自认证机构的实践测试,对我来说没有意义。谁能帮忙?问题:映射器发出键和值对的字数问题,其中每个词作为键,文字1作为值发出。然后,reducer为它接收到的每个文字“1”递增一个计数器。qn是“我们可以使用现有的reducer代码作为组合器吗”?正确答案描述为。"is",我们可以,因为求和任务是可交换和结合的。但我的理解是,答案应该是“否”,因为这两种情况会导致两个不同的答案。而且我相信只有在我们采用另一种方法将计数器增加它接收到的值而不是“为它接收到的每个文字1增加一个计数器”时,才能使用相同的reducer和combiner代码。举个例子让我们先考虑一个没有组合器的假设

java - 在 Reducer 中获取输入文件

我正在尝试编写一个mapreduce作业,我需要在其中迭代值两次。因此,当给出数字csv文件时,我们需要将其应用于每一列。为此,我们需要找到min和max值并将其应用到equation(v1)中。到目前为止我所做的是Inmap()IemitthecolumnidaskeyandeachcolumnasvaluesInReduce()Icalculatedtheminandmaxvaluesofeachcolumn.在那之后我就卡住了。接下来我的目标是应用等式(v=[(v−minA)/(maxA−minA)]*(newmaxA−newminA)+newminA)我的newmaxA和new

java - Hadoop 自定义 Mapper 输出格式到 Reducer

HDFS的新手:如果我错了,请纠正我,但据我所知:Mapper最后两个Text是映射器的返回类型。假设我想返回Text,.我怎么能做到这一点?另外,我应该在文档中的哪个位置查看?例如,映射器接收到对象和文本后,它对输入文件中的数据行执行一些逻辑,我希望它返回类似的内容context.write(Text,[Text,IntWriteable]) 最佳答案 你必须在hadoop中实现自定义可写。我指的是一些网站,可能会有帮助https://halalhassan.wordpress.com/2013/12/15/custom-writ

Python 映射器 reducer

我是python的新手,无法弄清楚为什么这段代码不产生错误消息和输出。它读取网络日志文件。defmapper(key,line):parts=line.split("/")iflen(parts)>2:returnparts[1],1returnNone,1defreducer(key,values):returnkey,sum(values)defmain():data={key,values}withopen('apache.log','r')aslogfile:foridx,lineinenumerate(logfile):line=line.strip()key,val=map

hadoop - 自定义分区程序与 MultipleOutputFormat

我是mapreduce的新手,我想知道使用自定义分区器根据特定条件创建多个输出与Mapreduce中的MultipleOutputs概念有什么区别。 最佳答案 使用自定义分区,您会将数据发送到不同的reducer,每个reducer将写入一个文件,其中包含由它处理的所有数据。part-r-00001,part-r-00002...使用MiltipleOutputs,每个reducer都可以使用自定义名称写入不同的文件(多个输出)。Tag1-r-00001,Tag2-r-00001,Tag1-r-00002,Tag2-r-00002.

hadoop - 动态计算oozie参数(MR Action 的reducer数量)

在我的oozie工作流程中,我动态创建了一个配置单元表,比如T1。此配置单元操作之后是映射减少操作。我想将reducers属性(mapred.reduce.tasks)的数量设置为等于字段的不同值,比如(T1.group)。关于如何动态设置某些oozie参数的值以及如何从hive不同操作获取参数值到oozie参数的任何想法? 最佳答案 希望对您有所帮助:像您已经做的那样创建配置单元表。执行另一个Hive查询,计算列的不同值并将其写入hdfs中的文件。创建一个Shell操作,它将读取文件并以key=value的形式回显值。为shell

java - 将 Reducer 的输出添加到 Hadoop 中的列表

我正在尝试将reducer的输出添加到list中,然后在读取所有值后访问并打印列表。这是我正在做的:-publicclassReducerextendsReducer{publicstaticfinalLoggerLOG=LoggerFactory.getLogger(Reducer.class);publicListkeys=newArrayList(1000);publicvoidreduce(Textkey,Iterablevalues,Contextcontext)throwsIOException,InterruptedException{for(BooleanWritabl

hadoop - Reducer 不选择 mapper 输出文件

我在一个文件夹中有4个文件,文件夹位置是我的输入路径参数。我需要单独查找每个文件的字数,并且应该写入与输入文件同名的文件。我已经编写了映射器类,它可以将输出正确地提供给指定的文件。但是,这并没有被reducer处理。我做错的是-我在编写映射器输出时没有使用“上下文”,因此将空值传递给缩减器并生成空白输出。但是,映射器按需要执行,并将文件保存在具有预期文件名的正确位置。我希望shuffle和sort&reducer处理这些文件/那些传递给reducer的文件。请纠正我。谢谢。映射器packagecom.oracle.hadoop.multiwordcount;importjava.io.