07 2015 档案
摘要:Spark使用Akka作为各种功能和组件之间的通信工具。同样,在资源调度过程中也使用其作为消息传递系统。之前,在分析了Apache Spark-1.0.0资源调度过程中,明确了主要消息的传递过程和引起的相关动作,本文主要分析Spark资源调度过程中所用到的Akka通信的初始化过程。(I)Job相关(...
阅读全文
摘要:今天碰到一个问题,需要通过JDBC链接数据库,使用Spark读取并处理数据,想到使用JdbcRDD,JdbcRDD的类定义如下private[spark] class JdbcPartition(idx: Int, val lower: Long, val upper: Long) extends ...
阅读全文
摘要:对于ResultTask,直接执行func操作,最后告知任务是否执行完成;而对于ShuffleMapTask,则需要将中间结果存储到实例化DirectTaskResult,以备下一个task使用,同时还要返回实例化的MapStatus。Executor.run中,当Task执行完毕调用execBac...
阅读全文
摘要:前面说到向executorActor(task.executorID)发送LaunchTask(task)消息,在CoarseGrainedExecutorBackend中定义receive接收launchTask消息,执行executor.launchTaskoverride def receiv...
阅读全文
摘要:前面提到,submitMissingTask是分发任务的开始,首先submitMissingTasks判断该stage是否为shuffle map stage,是则getPreferredLocs,实例化一个ShuffleMapTasks返回一组task集合,否则是final stage,getPr...
阅读全文
摘要:回到dagScheduler.runJob,submit提交作业返回waiter,waiter.awaitResult阻塞线程,判断Job是否执行成功def runJob[T, U: ClassTag]( rdd: RDD[T], func: (TaskContext, Iter...
阅读全文
摘要:基本概念:Job,Stage,Task,DagScheduler,TaskScheduler……RDD的操作可以分为Transformations和Actions,Transformations是lazy的不立即执行,Action则会触发作业的提交和执行。例如本例中的foreachdef forea...
阅读全文
摘要:LocalWordCount中,需要首先创建SparkConf配置Master、AppName等环境参数,如果程序中没有设置,则会读取系统参数。然后,以SparkConf作为参数创建SparkContext,初始化Spark环境。val sparkConf = new SparkConf().set...
阅读全文
摘要:Apache Spark版本迭代速度很快,但是基本框架和经典组件保持这统一模式,所以学习Spark源码,我选择的是Apache Spark-1.0.0版本,通过分析几个主要模块的工作原理,理解Spark的运行过程。通过LocalWordCount程序,调试Spark源码:LocalWordCount...
阅读全文
摘要:Spark读入本地文件后,成为MapPartitionsRDD,可以使用zipWithIndex,转换成ZippedWithIndexRDD:查看结果,每一行变为二元组“(内容,索引)”,索引从0开始:(# Apache Spark,0)("",1)(Spark is a fast and gene...
阅读全文
摘要:cat命令:cat file1.txt file2.txt > file.txt或者:cat file1.txt file2.txt >> file.txt单个>与双>>的区别:>:单>表示新建文件,如果此文件有的话,则覆盖;>>:双>>表示追加内容,可以将第二个文件追加到第一个文件后面,也就是合并...
阅读全文
摘要:在该语句之前加上repartition(1),即写作以下形式:rdd.repartition(1).saveAsTextFile("out.txt")即,之前每个partition保存成一个txt文件,现repartition成一个分区,然后再保存。注意(未验证):这个操作对于大文件来说,repar...
阅读全文

浙公网安备 33010602011771号