Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/hadoop/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Hadoop 映射减少输入格式_Hadoop_Mapreduce - Fatal编程技术网

Hadoop 映射减少输入格式

Hadoop 映射减少输入格式,hadoop,mapreduce,Hadoop,Mapreduce,我是hadoop的新手。并希望像这样向mapper输入int: 1234///678 3 3 2 1///5 9 0 =====////////----- 键值 第一个第四个键,第二个第三个值? 您能帮我在mapper类中用java编写它吗 我不想从文件中读取它。我不知道“不想从文件中读取”是什么意思。我认为您需要做的是从文件中读取每一行,并将每一行按“//”拆分 public static class MapClass extends MapReduceBase implements

我是hadoop的新手。并希望像这样向mapper输入int:

1234///678

3 3 2 1///5 9 0

=====////////-----

键值

第一个第四个键,第二个第三个值? 您能帮我在mapper类中用java编写它吗


我不想从文件中读取它。

我不知道“不想从文件中读取”是什么意思。我认为您需要做的是从文件中读取每一行,并将每一行按“//”拆分

public static class MapClass extends MapReduceBase implements
        Mapper<LongWritable, Text, Text, Text> {
    private Text word = new Text();

    public void map(LongWritable key, Text value,
            OutputCollector<Text, Text> output, Reporter reporter)
            throws IOException {
        String line = value.toString();
        StringTokenizer tokenizer = new StringTokenizer(line, "//////",
                false);
        word.set("key:"+tokenizer.nextToken());
        output.collect(word, new Text("value="+tokenizer.nextToken()));
    }
}
公共静态类MapClass扩展MapReduceBase实现
制图员{
私有文本字=新文本();
公共无效映射(可长写键、文本值、,
OutputCollector输出,报告器(报告器)
抛出IOException{
字符串行=value.toString();
StringTokenizer tokenizer=新的StringTokenizer(第“//”行),
假);
set(“key:+tokenizer.nextToken());
collect(word,新文本(“value=“+tokenizer.nextToken()));
}
}

如果需要,可以将键从映射器之前的值中分割出来,我认为这是一种更简单的方法来完成您要做的事情。它可以通过使用KeyValueTextInputFormat作为输入类来完成。这正是你所需要的;它允许您选择分隔符/分隔符,将键与传递给映射器的值分隔开。您可以通过执行以下操作进行设置:

job.setInputFormatClass(KeyValueTextInputFormat.class)

然后,您可以通过键入以下内容来选择分隔符:

Configuration conf=new Configuration();
conf.set(“mapreduce.input.keyvaluelinerecordreader.key.value.separator”、“//”


然后,当它到达您的映射器时,它已经被拆分。

thnx很大程度上vinnie意味着从mapreduce Code读取我的输入数据亲爱的Eric当我要使用此配置时告诉我:方法setInputFormatClass(类