为什么Apache的hadoop包树中有两个独立的包map-reduce包:
org.apache.hadoop.mapred
Run Code Online (Sandbox Code Playgroud)
http://javasourcecode.org/html/open-source/hadoop/hadoop-1.0.3/org/apache/hadoop/mapred/
org.apache.hadoop.mapreduce
Run Code Online (Sandbox Code Playgroud)
http://javasourcecode.org/html/open-source/hadoop/hadoop-1.0.3/org/apache/hadoop/mapreduce/
他们为什么被分开了?有文件说明这一点吗?
public static class Map extends MapReduceBase implements Mapper
Run Code Online (Sandbox Code Playgroud)
MapReduceBase
,Mapper
并JobConf
在Hadoop 0.20.203中弃用.
我们现在应该怎么用?
编辑1 - 对于Mapper
和MapReduceBase
,我发现我们只需要扩展Mapper
public static class Map extends Mapper
<LongWritable, Text, Text, IntWritable> {
private final static IntWritable one = new IntWritable(1);
private Text word = new Text();
public void map(LongWritable key, Text value,
OutputCollector<Text, IntWritable> output,
Reporter reporter) throws IOException {
String line = value.toString();
StringTokenizer tokenizer = new StringTokenizer(line);
while (tokenizer.hasMoreTokens()) {
word.set(tokenizer.nextToken());
output.collect(word, one); …
Run Code Online (Sandbox Code Playgroud) 根据Hadoop:The Definitive Guide.
新API支持"推"和"拉"式迭代.在这两个API中,键值记录对被推送到映射器,但此外,新API允许映射器从map()方法中提取记录.减速机也是如此."拉"样式如何有用的一个例子是批量处理记录,而不是逐个处理.
有没有人在Map/Reduce函数中提取数据?我对API或示例感兴趣.
我正在尝试执行一个简单的 MapReduce 程序,其中 Map 接受输入,将其分为两部分(键=>字符串和值=>整数)。reducer 总结了我每次都会收到 ClassCastException 的相应键的值。我无法理解代码中的什么导致了这个错误
我的代码:
import java.io.IOException;
import java.util.Iterator;
import org.apache.hadoop.fs.Path;
import org.apache.hadoop.io.LongWritable;
import org.apache.hadoop.io.Text;
import org.apache.hadoop.mapred.FileInputFormat;
import org.apache.hadoop.mapred.FileOutputFormat;
import org.apache.hadoop.mapred.JobClient;
import org.apache.hadoop.mapred.JobConf;
import org.apache.hadoop.mapred.MapReduceBase;
import org.apache.hadoop.mapred.Mapper;
import org.apache.hadoop.mapred.OutputCollector;
import org.apache.hadoop.mapred.Reducer;
import org.apache.hadoop.mapred.Reporter;
import org.apache.hadoop.mapred.TextInputFormat;
import org.apache.hadoop.mapred.TextOutputFormat;
public class Test {
public static class Map extends MapReduceBase implements
Mapper<LongWritable, Text, String, Integer> {
@Override
public void map(LongWritable key, Text value,
OutputCollector<String, Integer> output, Reporter reporter)
throws IOException {
String line = value.toString();
String[] lineParts = line.split(","); …
Run Code Online (Sandbox Code Playgroud) Hadoop Streaming作业和常规Java作业之间有什么区别?与后者相比,使用Hadoop流媒体有什么优势?
还有一件事,我正在使用mapreduce API(即新API),并且听说流仅适用于已弃用的mapred API。是吗 ?