1. Spark的RDD RDD(Resilient Distributed Datasets),弹性分布式数据集,是对分布式数据集的一种抽象. RDD所具备5个主要特性: 一组分区列表 计算每一个数据分片的函数 RDD上的一组依赖 对于Key Value 对的RDD,会有一个Partitioner, 这是数据的分区器,控制数据分区策略和数量 一组Preferred Location信息(如HDFS 上的数据块地址) 上图是一个简单的CoGroupedRDD满足了RDD 5个特性   2. RD…
1.transformation和action介绍 Spark支持两种RDD操作:transformation和action.transformation操作会针对已有的RDD创建一个新的RDD:而action则主要是对RDD进行最后的操作,比如遍历.reduce.保存到文件等,并可以返回结果给Driver程序.   例如,map就是一种transformation操作,它用于将已有RDD的每个元素传入一个自定义的函数,并获取一个新的元素,然后将所有的新元素组成一个新的RDD.而reduce就是…
1. 启动任务 在前面一篇博客中(Driver 启动.分配.调度Task)介绍了Driver是如何调动.启动任务的,Driver向Executor发送了LaunchTask的消息,Executor接收到了LaunchTask的消息后,进行了任务的启动,在CoarseGrainedExecutorBackend.scala case LaunchTask(data) => if (executor == null) { exitExecutor(, "Received LaunchTask…
本博文的主要内容是: 1.rdd基本操作实战 2.transformation和action流程图 3.典型的transformation和action RDD有3种操作: 1.  Trandformation      对数据状态的转换,即所谓算子的转换 2.  Action    触发作业,即所谓得结果的 3.  Contoller  对性能.效率和容错方面的支持,如cache.persist.checkpoint Contoller包括cache.persist.checkpoint. /…
一.Spark-Shell交互式工具 1.Spark-Shell交互式工具 Spark-Shell提供了一种学习API的简单方式, 以及一个能够交互式分析数据的强大工具. 在Scala语言环境下或Python语言环境下均可使用. 启动Spark-Shell                ./bin/spark-shell      本地模式,线程数为1(1个CPU)                ./bin/spark-shell --master                ./bin…
1.创建RDD val lines = sc.parallelize(List("pandas","i like pandas")) 2.加载本地文件到RDD val linesRDD = sc.textFile("yangsy.txt") 3.过滤 filter 需要注意的是 filter并不会在原有RDD上过滤,而是根据filter的内容重新创建了一个RDD val spark = linesRDD.filter(line => lin…
总算可以开始写第一篇技术博客了,就从学习Spark开始吧.之前阅读了很多关于Spark的文章,对Spark的工作机制及编程模型有了一定了解,下面把Spark中对RDD的常用操作函数做一下总结,以pyspark库为例. RDD 的操作函数(operation)主要分为2种类型 Transformation 和 Action,如下图: Transformation 操作不是马上提交 Spark 集群执行的,Spark 在遇到 Transformation 操作时只会记录需要这样的操作,并不会去执行,…
RDD RDD初始參数:上下文和一组依赖 abstract class RDD[T: ClassTag]( @transient private var sc: SparkContext, @transient private var deps: Seq[Dependency[_]] ) extends Serializable 下面须要细致理清: A list of Partitions Function to compute split (sub RDD impl) A list of De…
1. 究竟是怎么运行的? 很多的博客里大量的讲了什么是RDD, Dependency, Shuffle.......但是究竟那些Executor是怎么运行你提交的代码段的? 下面是一个日志分析的例子,来自Spark的example def main(args: Array[String]) { val sparkConf = new SparkConf().setAppName("Log Query") val sc = new SparkContext(sparkConf) val…
不多说,直接上干货! Pair RDD的transformation操作 Pair RDD转换操作1 Pair RDD 可以使用所有标准RDD 上转化操作,还提供了特有的转换操作. Pair RDD转换操作2…