public class MyMapper extends Mapper<LongWritable, Text, Text, Text> { @Override protected void map(LongWritable key, Text value, Mapper<LongWritable, Text, Text, Text>.Context context) throws IOException, InterruptedException { // 拿到传入进来的一行内容,把数据类型转换为String 空2:_________________________________ // 将字符串按照" "分隔符切割,并保存到字符串数组中 空3:_________________________________ if(words.length==3) context.write(new Text(words[1]), new Text(words[0]+" "+words[2]+"_file1")); else // 如果键值对来之于file2,则添加后缀"_file2",然后再发送到处理流水线 context.write(new Text(words[0]), new Text(words[1]+"_file2")); } }
时间: 2024-04-28 19:23:34 浏览: 66
Mybatis增删改查mapper文件写法详解
5星 · 资源好评率100%
这段代码是一个 Mapper 类,用于处理输入数据并输出键值对。在这个 Mapper 类中,map() 方法被重写,接收一个 LongWritable 类型的 key 和一个 Text 类型的 value,以及一个 Mapper.Context 对象,用于输出键值对。具体来说,该 Mapper 类的输入键值对类型是 LongWritable 和 Text,输出键值对类型是 Text 和 Text。
空2处应该填写以下代码:String line = value.toString(); 这行代码将 Text 类型的 value 转换为 String 类型的 line。
空3处应该填写以下代码:String[] words = line.split(" "); 这行代码将字符串 line 按照空格分隔符切割,并将结果保存到字符串数组 words 中。然后根据数组 words 的长度判断键值对来自哪个文件,如果长度为 3,则表示键值对来自 file1 文件,需要将第二个单词作为键,第一个单词和第三个单词用空格拼接作为值,并在值的末尾添加 "_file1" 后输出;否则表示键值对来自 file2 文件,需要将第一个单词作为键,第二个单词在末尾添加 "_file2" 后作为值输出。
阅读全文