2017-06-21 9 views
0

良い一日で、私のタイトルは最高のものである場合、私は知らないが、私はこのリストを持っている:が、並べ替えのApache Hadoopの中に名前と値

201505011000######PEN DRIVE01470 
201505011000#######NOTEBOOK11470 
201605011000#######NOTEBOOK21471 
201705011000#######NOTEBOOK21472 
201705011000###GAVETA DE HD01472 
201703011000###GAVETA DE HD01473 

などのために:201505表し年月は #の後に商品名がついており、価格は0147014,70となります。

私がする必要があるのは、各製品の低価格を取得し、その価格の年と月を表示することです。 しかし私はそれをすることを知らない、私が示すことができるのは、より低い価格と製品です。ここで

は私のプログラムである: MAPPER

package pkg.produto; 

import org.apache.hadoop.io.IntWritable; 
import org.apache.hadoop.io.LongWritable; 
import org.apache.hadoop.io.Text; 
import org.apache.hadoop.mapreduce.Mapper; 

import java.io.IOException; 

public class MinProdutoMapper 
     extends Mapper<LongWritable, Text, Text, IntWritable> { 
    @Override 
    public void map(LongWritable key, Text value, Context context) 
      throws IOException, InterruptedException { 
     String line = value.toString(); 
     String ano = line.substring(0, 6); 
     String produto = line.substring(13, 27);//Nome do produto 
     produto = produto.substring(produto.lastIndexOf("#") + 1); 
     //String produto_ano = ano+produto ; 
     int valor = Integer.parseInt(line.substring(27, 32));//Valor do produto 
     context.write(new Text(produto), new IntWritable(valor)); 
    } 
} 

REDUCER

package pkg.produto; 

import org.apache.hadoop.io.IntWritable; 
import org.apache.hadoop.io.Text; 
import org.apache.hadoop.mapreduce.Reducer; 

import java.io.IOException; 

public class MinProdutoReducer extends Reducer<Text, IntWritable, Text, IntWritable> { 
    @Override 
    public void reduce(Text key, Iterable<IntWritable> values, Context context) throws IOException, InterruptedException { 
     int minValue = Integer.MAX_VALUE; 
     for (IntWritable value : values) { 
      minValue = Math.min(minValue, value.get()); 
     } 
     context.write(key, new IntWritable(minValue)); 
    } 
} 

誰かが助けることができますか?

+0

セカンダリソートを見てから、ソリューションを変更することができます。ここでは、問題を解決するのに役立つコード例の1つのリンクを示します。セカンダリソート – SurjanSRawat

答えて

-1

セカンダリソートを見てから、ソリューションを変更することができます。ここでは、問題を解決するのに役立つコード例の1つのリンクを示します。 secondary-sort

+1

あなたが提供したリンクでは、質問に答えるには十分ではありません。これをコメントとして投稿するか、問題を解決するためにそれを詳述してください。 – philantrovert

関連する問題