gpt4 book ai didi

java - 如何(在 Hadoop 中)将数据以正确的类型放入 map 和 reduce 函数中?

转载 作者:可可西里 更新时间:2023-11-01 14:25:47 26 4
gpt4 key购买 nike

我有点难以理解 Hadoop 中的数据如何放入 map 和简化功能。我知道我们可以定义输入格式和输出格式,然后定义输入和输出的键类型。但是举个例子,如果我们想要一个对象作为输入类型,Hadoop 内部是如何做到的?

谢谢...

最佳答案

您可以使用 Hadoop InputFormat 和 OutputFormat 接口(interface)来创建您的自定义格式..一个示例可能是将 MapReduce 作业的输出格式化为 JSON..类似这样 -

public class JsonOutputFormat extends TextOutputFormat<Text, IntWritable> {
@Override
public RecordWriter<Text, IntWritable> getRecordWriter(
TaskAttemptContext context) throws IOException,
InterruptedException {
Configuration conf = context.getConfiguration();
Path path = getOutputPath(context);
FileSystem fs = path.getFileSystem(conf);
FSDataOutputStream out =
fs.create(new Path(path,context.getJobName()));
return new JsonRecordWriter(out);
}

private static class JsonRecordWriter extends
LineRecordWriter<Text,IntWritable>{
boolean firstRecord = true;
@Override
public synchronized void close(TaskAttemptContext context)
throws IOException {
out.writeChar('{');
super.close(null);
}

@Override
public synchronized void write(Text key, IntWritable value)
throws IOException {
if (!firstRecord){
out.writeChars(",\r\n");
firstRecord = false;
}
out.writeChars("\"" + key.toString() + "\":\""+
value.toString()+"\"");
}

public JsonRecordWriter(DataOutputStream out)
throws IOException{
super(out);
out.writeChar('}');
}
}
}

关于java - 如何(在 Hadoop 中)将数据以正确的类型放入 map 和 reduce 函数中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10961474/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com