2 개 파일의 내용을 가입 절감 사용하여 여러 파일의 결합 :지도
첫 번째 파일 (포함 직원 이름 데이터)
id,name
101,Gaurav
102,Rohit
103,Karishma
104,Darshan
105,Divya
두 번째 파일 (포함 직원 부서 데이터)
id,dept
101,Sales
102,Research
103,NMG
104,Admin
105,HR
=====================
,210출력
id,name,dept
101,Gaurav,Sales
102,Rohit,Research
103,Karishma,NMG
어떻게 출력의이 종류를 acheive합니까?
지금부터 난 내가 ID, 이름, 부서와 같은 지정된 순서로 출력
.. 감속기 등의 출력을 랜덤 값을 원하는군요. 도움을 주시면 감사하겠습니다.
매퍼 클래스는 ...
public class JoinReducer extends Reducer<Text, Text, NullWritable, Text> {
String merge = "";
public void reduce(Text key, Iterable<Text> values, Context context) throws IOException, InterruptedException {
merge = key.toString(); // 101
for(Text value : values) {
merge += "," + value.toString();
}
context.write(NullWritable.get(), new Text(merge));
}
}
드라이버 클래스는 다음과 같습니다 ...
public class JoinMapper extends Mapper<LongWritable, Text, Text, Text> {
private Text keyEmit = new Text();
private Text valEmit = new Text();
public void map(LongWritable k, Text value, Context context) throws IOException, InterruptedException
{
String line=value.toString();
String[] words=line.split(",");
keyEmit.set(words[0]);
valEmit.set(words[1]);
context.write(keyEmit, valEmit);
}
}
감속기 클래스는 다음과 같습니다 ... 다음과 같습니다
public class JoinDriver {
public final static void main(final String[] args) throws Exception {
Configuration conf = new Configuration();
Job job = new Job(conf, "Multiple join");
job.setJarByClass(JoinDriver.class);
// job.setMapperClass(JoinMapper.class);
job.setReducerClass(JoinReducer.class);
MultipleInputs.addInputPath(job, new Path(args[0]),
TextInputFormat.class, JoinMapper.class);
MultipleInputs.addInputPath(job, new Path(args[1]),
TextInputFormat.class, JoinMapper.class);
job.setMapOutputKeyClass(Text.class);
job.setMapOutputValueClass(Text.class);
job.setOutputKeyClass(Text.class);
job.setOutputValueClass(Text.class);
job.setOutputFormatClass(TextOutputFormat.class);
FileOutputFormat.setOutputPath(job, new Path(args[2]));
System.exit(job.waitForCompletion(true) ? 0 : 1);
}
}
출력은 다음과 같습니다. 나는 ID, 이름, 부서와 같은 순서대로 원합니다. 당신이 어떤 잘 모릅니다 때문에
질문에 코드를 입력해야합니다. –
@BinaryNerd 코드를 확인하십시오. 내가 알기로는 감속기에 입력으로 전송되는 값이 무작위이며,이 특정 경우에 특정 순서로 전송되도록하는 방법입니다. –