jjzjj

NullWritable

全部标签

hadoop - context.write() 方法中的 NullWritable

我如何才能在我的context.write()方法中只放入值。我不想在我的文本文件中写入key,所以我不想在我的context.write()方法中发出key。这是我的映射器代码:publicclassMyMapperextendsTableMapper{privatefinalIntWritableONE=newIntWritable(1);privateTexttext=newText();publicvoidmap(ImmutableBytesWritablerow,Resultvalue,Contextcontext)throwsIOException,InterruptedE

java - 在hadoop中没有reducer的情况下限制多输出中映射器的数量

您好,我有一个从HBase读取记录并将其写入文本文件的应用程序HBase表有200个区域。我在映射器类中使用MultipleOutputs来写入多个文件,并且我正在根据传入的记录创建文件名。我正在制作40个唯一的文件名。我能够正确获取记录,但我的问题是,当mapreduce完成时,它会创建40个文件以及2k个具有正确名称但附加的额外文件用m-000等等。这是因为我有200个区域,MultipleOutputs为每个映射器创建文件,所以200个映射器,每个映射器有40个唯一文件,所以它创建40*200个文件。如果没有自定义分区程序,我不知道如何避免这种情况。有什么方法可以强制将记录写入所

java - 计算每个重叠间隔数的最佳 MapReduce 算法

[a,b]格式有数十亿个区间,它们都会将数字空间切割成多个单片。我打算输出所有单件,其中重叠间隔的数量在这件作品中。例如:有3个区间,分别是:[1,7]、[2,3]、[6,8]。它应该输出如下结果:[-∞,1]:0[1,2]:1[2,3]:2[3,6]:1[6,7]:2[7,8]:1[8,+∞]:0如果对于单个机器(不是MapReduce中的分布式解决方案),我知道解决方案可以将间隔实例分解为start_n、end_n,排序数字并从左到右迭代并使用计数器来计算当前件和输出中的数量。但我不确定如何将此算法拆分为分布式方式。有什么建议吗?谢谢。 最佳答案

java - 如何构建 buildOutputValue 方法

拜托,我需要这段代码的帮助:publicclassThirdQueryReducerextendsReducer{privateNullWritablenullWritableKey=NullWritable.get();privateTextoutputValue=newText();privateStringBuilderbuildOutputValue(IntWritablekey,StringBuilderreduceValueBuilder,Textvalue){}@Overridepublicvoidreduce(IntWritablekey,Iterablevalues,

hadoop - 如何从 mapreduce 中的 reducer 输出中删除 r-00000 扩展

我能够正确重命名我的reducer输出文件,但r-00000仍然存在。我在我的reducer类中使用了MultipleOutputs。这是那个的详细信息。不确定我遗漏了什么或我还需要做什么?publicclassMyReducerextendsReducer{privateLoggerlogger=Logger.getLogger(MyReducer.class);privateMultipleOutputsmultipleOutputs;StringstrName="";publicvoidsetup(Contextcontext){logger.info("InsideReduce

java - 映射 : expected org. apache.hadoop.io.NullWritable 中的值类型不匹配,已收到 org.apache.hadoop.io.Text

我正在尝试调整现有问题以满足我的需要..基本上输入的都是简单的文本我处理它并将键/值对传递给reducer我创建了一个json..所以有关键但没有值(value)所以映射器:输入:文本/文本输出:文本/文本缩减器:文本/文本输出:文本/无我的签名如下:publicclassAdvanceCounter{/***ThemapclassofWordCount.*/publicstaticclassTokenCounterMapperextendsMapper{//{//values,Contextcontext)//但是在执行时我得到了这个错误:13/06/0413:08:26INFOma

hadoop - NullWritable 的目的

我想统计订了电影票的学生人数,并且我只想在reduce阶段后输出一个结果。我希望映射器发出学生人数而不是key。我可以使用NullWritable作为输出键,以便映射端不会发出任何内容作为缩减端的键吗?如下图context.write(NullWritable.get(),newIntWritable(1);数据将被发送到reducer,reducer将执行进一步的聚合如果有人有更好的选择,请提出建议。提前致谢! 最佳答案 相反,您可以将map输出作为context.write(newText("numberofstudents")

scala - 无法在 Scala 中为 Array[NullWritable, ByteWritable] 编写 SequenceFile

我在Scala中有一个字节数组:valnums=Array[Byte](1,2,3,4,5,6,7,8,9)或者您可以采用任何其他字节数组。我想将它保存为HDFS中的序列文件。下面是代码,我在Scala控制台中编写。importorg.apache.hadoop.io.compress.GzipCodecnums.map(x=>(NullWritable.get(),newByteWritable(x)))).saveAsSequenceFile("/yourPath",classOf[GzipCodec])但是,它给出了以下错误:error:valuessaveAsSequenceF

输出键为 NullWritable 时的 Hadoop reducer 输出顺序

我正在编写一个hadoop应用程序,其最终输出是一个bmp图像。我将输出格式更改为byte,这是我的问题:如果我将输出键设置为NullWritable,reducer输出顺序会是什么? 最佳答案 reducer的输出键类型对reducer输出的顺序没有影响-它由reducer输入键控制,并且通过键compareTo方法或原始比较器的自然排序,如果配置。所以顺序将与你的reducer处理记录的顺序相同(除非你的reducer维护键/值之间的状态并定期刷新此状态) 关于输出键为NullWri

RCFIle 格式文件的 Hadoop NullWritable

我不太理解Hadoop中的NullWritable的概念。它的用途是什么?为什么RCFile的outputKeyClass格式为NullWritable.class而outputValueClass为BytesRefArrayWritable.class? 最佳答案 这是因为RCFiles没有key。当您从CSV等纯文本文件中读取时,key通常是文件中的字节偏移量。由于RCFiles具有列式存储格式,因此实际上并没有可用于标识行的键,因为行分散在不同的列集中。NullWritable本质上意味着忽略这个值。
12