MapReduce 方式 Map 函数 public class LineLengthCountMapper extends Mapper<LongWritable,Text,IntWritable,IntWritable> { @Override protected void map(LongWritable lineNumber, Text line, Context context) throws IOException, InterruptedException { context.write(new IntWritable(line.getLength()), new IntWritable(1)); } } Spark 方式 Map 函数 lines.map(line => (line.length, 1)) 上代码中 map() 操作是一个 RDD 有了RDD链式实现就简单多了 |
seraph50 发表于 2015-12-2 16:45 首先第一个问题,spark是可以进行链式任务的,这点是肯定的。 至于如何将mapreduce转换为spark编程模型,则是需要楼主首先懂spark是什么? spark的本质是通过RDD来操作的。所以实现链式是特别简单的。 如何转换编程模型,其实也很简单。 首先楼主需要懂scala,不懂的话,只能自己打基础。 这篇文章对楼主有所帮助 如何将 MapReduce 转化为 Spark http://www.aboutyun.com/thread-16414-1-1.html |
seraph50 发表于 2015-12-2 16:28 spark会提交任务,然后对任务分解。分解的过程,如果有多个阶段,那就如楼主图,spark任务有的比楼主的还复杂。 为每一个job计算出一个DAG,并且去跟踪已经实现的RDD和stage,并且为每一个job找到一个最小的调度去运行,然后将stages封装为taskset提交给taskScheduler。 链接:http://pan.baidu.com/s/1qWovXzY 密码:1ekk |
seraph50 发表于 2015-12-2 16:11 楼主spark是天生的,mapreduce链式则是后来发展的 spark使用的是DAG |