张伯毅的专栏

人生就是一道证明题,证明我们的存在不是偶然....

Spark2.3.0 通过Phoenix4.7 查询 Hbase 数据.

0. 环境 软件 版本 JDK 1.8 SCALA 2.11.8 Spark 2.3.0 Phoenix 4.7.0 Hbase 1.1.2 1. 目标数据 CREATE TABLE TABLE1 (ID BIGINT ...

2019-03-14 19:47:22

阅读数 99

评论数 0

Spark2.3.2源码解析: 算子解析 [ 四 . Action算子  ]

本文讲述的是[ Action算子 ] 分类的算子. 本质上在 Action 算子中通过 SparkContext 进行了提交作业的 runJob 操作,触发了RDD DAG 的执行。 一、无输出     22、foreach算子  foreach 对 RDD 中的每个元素都应用 f 函数...

2019-03-12 18:27:11

阅读数 66

评论数 0

Spark2.3.2源码解析: 算子解析 [ 三 . Key-Value数据类型的Transfromation算子  ]

本文讲述的是[ Key-Value数据类型的Transfromation算子 ] 分类的算子. 一、输入分区与输出分区一对一     15、mapValues算子 mapValues :针对(Key, Value)型数据中的 Value 进行 Map 操作,而不对 Key 进行处理。...

2019-03-12 18:03:29

阅读数 88

评论数 0

Spark2.3.2源码解析: 算子解析 [ 二 . Value数据类型的Transformation算子  ]

本文讲述的是[ Value数据类型的Transformation算子 ] 分类的算子. 一、输入分区与输出分区一对一型     1、map算子 将原来 RDD 的每个数据项通过map 中的用户自定义函数 f映射转变为一个新的元素。源码中 map 算子相当于初始化一个 RDD, 新...

2019-03-12 10:28:01

阅读数 47

评论数 0

Spark2.3.2源码解析:Shuffle 过程写入的 数据文件&索引文件

Spark 在 shuffle 过程中,如果内存空间不足会向磁盘溢写文件, 一个索引文件,一个数据文件. 那么这两个文件长什么样? 里面放什么数据呢? 文件命名: ShuffleBlockId : "shuffle_" + shuffleId...

2019-03-11 18:11:50

阅读数 39

评论数 0

Spark2.3.2源码解析: 算子解析 [ 一 . 概览 ]

本章先大体对Spark的算子进行分类, 然后根据分类做具体分析  从大方向来说,Spark 算子大致可以分为以下两类: 1)Transformation 变换/转换算子:这种变换并不触发提交作业Action 操作,完成作业中间过程处理。      Transformation ...

2019-03-11 11:52:31

阅读数 49

评论数 0

Redis 单节点千万级别数据读取 , 插入 Mysql 性能测试.

  环境说明:             Redis 未做任何优化, 单节点    (服务器上, 内存64G).             Mysql 未做任何优化, 单节点     (服务器上, 内存64G).             数据量 : 10058624条          (大约...

2019-02-26 14:35:38

阅读数 210

评论数 0

Spark2.3.2源码解析: 4.3.Yarn cluster 模式 Executor 注册/启动源码 分析

本文章与前两篇文章有衔接性, 想知道为什么从此处代码开始的话,请查阅前两篇文章: Spark2.3.2源码解析: 4.1.Yarn cluster 模式 SparkSubmit源码分析(一) https://blog.csdn.net/zhanglong_4444/article/deta...

2019-02-22 17:45:36

阅读数 611

评论数 0

两个数据进行过滤,广播map 数据与 join 操作 性能对比

主要测试两种情况 1.将 rdd 转换为 map 广播, 与另外集合rdd 进行匹配 2.将 rdd 与 rdd 进行连表 , 过滤数据.   时间单位(毫秒)   10万 100万 500万 1000万 广播map 过滤 4 8 22 ...

2019-02-15 17:59:46

阅读数 85

评论数 0

Spark 算子 : groupByKey 和 collectAsMap 配合使用运行时间与结果测评

在看代码的时候,发现同事在用 将数据转换为 map 之前,加了一个 groupByKey , 觉得这样并不靠谱,所以写了一段代码进行验证.   结果如下: (无论哪种方式, 数据是一样的 !!! 使用groupByKey 会慢 很多   )   情况1: 随机生成 指定条数的数据, 无重复...

2019-02-15 15:46:14

阅读数 89

评论数 0

Spark 算子 : distinct 和 collectAsMap 配合使用运行时间与结果测评

  在看代码的时候,发现同事在用 将数据转换为 map 之前,加了一个 distinct , 觉得这样并不靠谱,所以写了一段代码进行验证.   结果如下: (无论哪种方式, 数据是一样的 !!! 使用distinct 会慢 很多   )   情况1: 随机生成 指定条数的数据, 无重复 ...

2019-02-15 15:21:36

阅读数 110

评论数 0

Spark2.3.2源码解析: 11. collectAsMap 源码解析& 性能测试

  本文主要是为了认识collectAsMap 的源码, 以及在使用的时候性能。 对其性能方面做一个直观的理解   /** * Return the key-value pairs in this RDD to the master as a Map. * * Warning: t...

2019-02-13 10:10:39

阅读数 74

评论数 0

Spark2.3.2源码解析:(多线程)不中断线程 (UninterruptibleThread )

本文讲述,spark中的不中断线程的内容。 直接看代码:UninterruptibleThread 主要作用是重写 Thread类的interrupt方法,在执行thread.interrupt()方法的时候 增加了一个判断uninterruptible(或者说是一个锁,在线程执行完成之后,...

2019-01-16 13:09:31

阅读数 2241

评论数 0

Spark RDD的默认分区数

spark.default.parallelism:(默认的并发数)     如果配置文件spark-default.conf中没有显示的配置,则按照如下规则取值:     本地模式(不会启动executor,由SparkSubmit进程生成指定数量的线程数来并发):     spark-...

2019-01-04 09:58:05

阅读数 497

评论数 0

Spark2.3.2源码解析: 10. 调度系统 Task任务提交 (三) TaskScheduler : Executor 任务提交

架构图:     代码提交时序图 Standalone模式提交运行流程图:     首先写一个WordCount代码(这个代码,为了观察多个stage操作,我写了两个reducebykey 函数) 源代码:   直接执行代码,查看spark执行程序时...

2018-12-29 17:03:59

阅读数 2485

评论数 0

Spark 本地化计算参数调整分析

  Spark在Driver上,对Application的每一个stage的task,进行分配之前,都会计算出每个task要计算的是哪个分片数据,RDD的某个partition;Spark的task分配算法,优先,会希望每个task正好分配到它要计算的数据所在的节点,这样的话,就不用在网络间传输...

2018-12-28 22:10:24

阅读数 2227

评论数 0

Spark复杂情况下的stage划分 reduceByKey leftOuterJoin union

为了研究复杂情况下的stage划分,故意写了一段复杂一点的代码进行测试。   代码: import org.apache.spark.{SparkConf, SparkContext} object WordDemo { //spark-submit --name 'WordDem...

2018-12-28 10:48:23

阅读数 1940

评论数 0

Spark2.3.2源码解析: 10. 调度系统 Task任务提交 (二) TaskScheduler : 本地化计算

  架构图:   Standalone模式提交运行流程图:   首先写一个WordCount代码(这个代码,为了观察多个stage操作,我写了两个reducebykey 函数) 源代码:   直接执行代码,查看spark执行程序时,将代码划分stage生成的...

2018-12-25 16:00:02

阅读数 1980

评论数 0

Spark2.3.2源码解析:9.调度系统 DAGScheduler 之 Stage 划分源码详解

Stage划分的时候,大家应该都知道是从最后一个stage向根据宽窄依赖,递归进行stage划分。 但是代码里面涉及的逻辑复杂。毕竟涉及到相互递归调用。让人似懂非懂。 反正我是炸毛了 o(╥﹏╥)o 本文专门用一篇文章详细论述DAGScheduler 的 stage 划分流程 为了更容易理解...

2018-12-22 12:49:16

阅读数 2439

评论数 0

Spark2.3.2源码解析: 10. 调度系统 Task任务提交 (一) DAGScheduler 之 stage 提交

  一个Spark Application分为stage级别和task级别的调度,  task来源于stage,所有本文先从stage提交开始讲解task任务提交。   架构图: Standalone模式提交运行流程图: 首先写一个WordCount代码(这个代码,为了观察多个...

2018-12-22 12:11:52

阅读数 2239

评论数 1

提示
确定要删除当前文章?
取消 删除