Spark
spark
韩运畅
这个作者很懒,什么都没留下…
展开
-
spark--repartition与coalesce
repartition源码: /** * 注释写的很清楚 * Return a new RDD that has exactly numPartitions partitions. * * Can increase or decrease the level of parallelism in this RDD. Internally, this uses * a ...原创 2020-05-03 18:17:01 · 163 阅读 · 0 评论 -
spark--join的三种方式
broadcast hash join(小表和大表) 将小表broadcast到所有的Executor中,将其加载进内存,然后生成一个hash table,每个节点都遍历所分得大表中的数据,先判断join字段的hash是否相等,如 果相等在判断join字段是否相等 网络传输数据量:小表*k shuffle hash join(较大表和大表) ----原理:key若相等,hash值必...原创 2020-05-03 17:13:43 · 423 阅读 · 0 评论 -
spark--RDD分区器
分区器的主要作用: 1. 决定一条记录应该进入哪一个分区,或者说map端的数据应该进入哪一个reducer 2. 决定分区的数量,例如执行操作 groupByKey(new HashPartitioner(2)) 所生成的 ShuffledRDD 中,分区的数目等于 2。 HashPartitioner 根据key的hash值模上分区数量。缺点:可能导致数据倾斜 RangePartit...原创 2020-05-03 16:25:50 · 150 阅读 · 0 评论 -
spark--存储模块
主从架构,driver端的BlockManager随着SparkEnv被创建而创建,SparkEnv随着 SparkContext创建而被创建。Master存储的是整个application的元数据。原创 2020-05-03 15:35:47 · 125 阅读 · 0 评论 -
RDD==依赖+定义的计算+分区数+。。。
RDD:弹性分布式数据集 特点:粗粒度转换,只读的,不同于细粒度状态更新的模型 优点:极其利于容错处理+…原创 2020-05-02 21:54:20 · 87 阅读 · 0 评论 -
Shuffle模块
shuffle概述:前一个stage 的 ShuffleMapTask 进行 shuffle write, 把数据存储在 blockManager 上面, 并 且把数据位置元信息上报到 driver 的 mapOutTrack 组件中, 下一个 stage 根据数据位置元信息, 进行 shuffle read, 拉取上个stage 的输出数据。 ...原创 2020-05-02 19:12:14 · 477 阅读 · 0 评论 -
Scheduler模块
概述:Scheduler模块有两个重要的组件,DAGScheduler与TaskScheduler。DAGScheduler主要负责分析用户提交的应用,并根据任务的依赖关系建立DAG,然后将DAG划分为不同的stage,其中每个stage由一组可以并发执行的task组成,这些task的执行逻辑相同只是作用于不同的数据。在DAGScheduler将这组Task划分完后,会将他们提交给TaskSche...原创 2020-05-02 17:33:25 · 369 阅读 · 0 评论 -
spark--closure broadcast accumulator
closure: 这种代码是错误的: var counter = 0 var rdd = sc.parallelize(data) // Wrong: Don't do this!! rdd.foreach(x => counter += x) println("Counter value: " + counter) closure :To execute jobs, Spark br...原创 2020-05-02 15:18:41 · 168 阅读 · 0 评论 -
spark--cache persist checkpoint区别
cache与persist cache等于persist(MEMORY_ONLY),他们都需要action算子触发,数据在该进程结束后会被删除,不会切断血缘。 Memory_Only:只存于内存 Disk_Only:只存于磁盘 Memory_and_disk:内存不够,存于磁盘 Memory_only_ser:将数据以序列化的方式存于内存 checkpoint 他是在job执行后,从final...原创 2020-05-02 15:00:56 · 167 阅读 · 0 评论 -
spark的app如何执行
App -> job -> stage -> task app中的每一个action算子都会触发一个job,每个job根据宽依赖划分为若干stage,每个stage有若干窄依赖的tasks,tasks并行执行,task中后面的transformation的输入是前面的输出。每个job的结果都会汇总到driver中。 问题1:如何划分tasks? 一个stage中所有由黑线连...原创 2020-05-02 14:45:22 · 555 阅读 · 0 评论 -
spark--集群架构
Master Worker Driver Executor(线程池<-->tasks) application Master:负责管理所有的Worker节点并进行资源分配 Worker:负责管理所有的Executor,并与Master进行通信,默认一个Worker只有一个Executor Application:一个Application==Driver+若干Executor...原创 2020-05-01 18:01:03 · 231 阅读 · 0 评论 -
spark中的宽窄依赖
NarrowDependency: Base class for dependencies where each partition of the child RDD depends on a small number of partitions of the parent RDD. Narrow dependencies allow for pipelined execution. ...原创 2020-04-27 14:29:07 · 280 阅读 · 0 评论