我有4個信息就像是一個巨大的CSV文件:用hadoop獲得csv文件最大價值的更好方法是什麼?
DF Alice 20.4
MG Bob 30.4
MG Clara 14.3
SP Daniel 40.2
...
我寫了一個Hadoop的map-reduce代碼來獲取所有表的主要價值:
映射:
public class BolsaFamiliaMapper extends MapReduceBase implements
Mapper<LongWritable, Text, Text, DoubleWritable> {
public void map(LongWritable key, Text value, OutputCollector<Text,
DoubleWritable> output, Reporter reporter) throws IOException { String
valueString = value.toString();
String[] SingleData = valueString.split("\t");
output.collect(new Text("Biggest"), new
DoubleWritable(Double.parseDouble(SingleData[2])));
}
}
減速機:
public class BolsaFamiliaReducer extends MapReduceBase implements Reducer<Text,
DoubleWritable, Text, DoubleWritable> {
public void reduce(Text t_key, Iterator<DoubleWritable> values,
OutputCollector<Text,DoubleWritable> output, Reporter reporter)
throws IOException {
Text key = t_key;
double frequency = 0.0;
while (values.hasNext()) {
// replace type of value with the actual type of our value
DoubleWritable value = (DoubleWritable) values.next();
if (value.get() > frequency) {
frequency = value.get();
}
}
output.collect(key, new DoubleWritable(frequency));
}
}
如果我深知,在減少EXE cution不會並行運行,因爲我使用的密鑰(「最大」)。
有沒有更好的方式來獲得這些重要的價值?
,我有另一個疑惑是我怎樣才能檢查UF(SP)的最大值的元組。是否可以在相同的地圖 - 減少?如果有可能,我可以用UF分類最大的價值嗎?
我在初學地圖,減少操作和Hadoop,而且我找不到在其他論壇上的任何答覆。
您是否必須使用Java MapReduce?爲什麼不是豬? –
是的,我有。我正在研究map-reduce,後者我也會對Pig進行測試。但是現在我需要使用Java MapReduce。 – j3r3mias
我想你已經問了兩個問題在這裏...查看整體最大價值,我相信你需要一個減速,是的,因爲這將迫使'迭代器 values'把所有要比較的值。至於「按這個」UF「值分組。你用'SingleData [0]'替換''Biggest''' –