//MAPPER pseudo code
public static class DistinctMapper extends Mapper<Object, Text, Text, NullWritable> {
private Text col1 = new Text();
private Text col2 = new Text();
public void map(Object key, Text value, Context context) throws IOException, InterruptedException {
// Logic to extract columns
String C1 = extractColumn(value);
String C2 = extractColumn(value);
if (C2 != 'WhereCluaseValue') { // filter value
return;
}
// Mapper output key to the distinct column value
col1.set(C1);
// Mapper value as NULL
context.write(col1, NullWritable.get());
}
}
//REDUCER pseudo code
public static class DistinctReducer extends Reducer<Text, NullWritable, Text, NullWritable> {
public void reduce(Text key, Iterable<NullWritable> values, Context context) throws IOException, InterruptedException {
// distinct column with a null value
//Here we are not concerned about the list of values
context.write(key, NullWritable.get());
}
}
[Hive](https://hive.apache.org)を試しましたか? – franklinsijo
私はmap reduce frameworkを使ってそれを行う必要があります。私が使用している論理私が使用しているのは、それぞれのマッパーがwhere句をチェックし、一致するものがキーとしてwhere句を、値としてcol1を出すかどうかです。デフォルトのハッシュ関数に基づいて、すべての出力は同じ減速器に送られます。減量拠点では、重複を排除して別個の値を出すことができます。これは正しいアプローチですか? –