spark
文章平均质量分 58
幡然醒悟的研二狗-致敬所有受压迫的博士
天道有轮回,我爱撸代码,拒绝读博士。
从代码中理解数学原理~~~~
展开
-
spark.sql.shuffle.partitions和spark.default.parallelism的深入理解
stack overflow链接总结:1.spark.default.parallelism只对RDD有效,对sparksql(DataFrame、DataSet)无效2.spark.sql.shuffle.partitions对sparksql中的joins和aggregations有效,但其他的无效(对这种情况下,上述的两种配置都无效,我们应该怎么办呢?看第三点)3.我们可以使用repartition算子对dataframe进行重分区。...原创 2021-01-07 15:33:16 · 4091 阅读 · 0 评论 -
RDD的复用和RDD的持久化的区别
原创 2021-01-06 21:45:54 · 1196 阅读 · 0 评论 -
spark 优化之详尽概述
文章目录前言一、spark性能调优1.常规性能调优2.算子调优3.Shuffle调优4.JVM调优二、spark数据倾斜1.数据倾斜的表现:2.定位数据倾斜:3.解决数据倾斜方案:三、spark故障排除前言spark性能调优spark数据倾斜spark故障排除一、spark性能调优1.常规性能调优最优资源配置RDD优化RDD复用RDD持久化RDD尽可能早的filter操作并行度调节广播变量Kryo序列化调节本地化等待时长2.算子调优mapPartitio原创 2021-01-06 18:51:55 · 1196 阅读 · 0 评论 -
一文详解spark与mr的不同,让你清楚的明白为什么spark比mr“快”
问题1描述:Spark计算比MapReduce快的根本原因在于DAG计算模型。一般而言,DAG相比Hadoop的MapReduce在大多数情况下可以减少shuffle次数(怎么体现?)解答:Spark的DAGScheduler相当于一个改进版的MapReduce,如果计算不涉及与其他节点进行数据交换,Spark可以在内存中一次性完成这些操作,也就是中间结果无须落盘,减少了磁盘IO的操作。但是,如果计算过程中涉及数据交换,Spark也是会把shuffle的数据写磁盘的!!!另外有同学提到,Spar原创 2021-01-05 18:31:36 · 2953 阅读 · 0 评论 -
sparkStreaming之transform的细节
val socketLineDStream: ReceiverInputDStream[String] = streamingContext.socketTextStream('linux1', 8888)// TODO Driver中执行一次// 例如val a = 1 在Driver中只执行一次// 首先看一下DStream的其他Transformations(转换)操作socketLineDStream.map({ case x => { // TODO Exec原创 2020-12-30 18:28:58 · 3860 阅读 · 10 评论 -
spark之sortBy分区数
spark的sortBy既是转换算子又是行动算子。scala> sc.makeRDD(1 to 5, 2).sortBy(x=>x, false, 4)res11: org.apache.spark.rdd.RDD[Int] = MapPartitionsRDD[13] at sortBy at <console>:25对应的UI界面是可以看到出现了一个job,而行动算子才会产生job。点进job去之后,看到下幅图。从图中可以看出,sortBy排序后产生的RDD的分区数原创 2020-12-21 17:51:48 · 1921 阅读 · 0 评论 -
spark累加器
累加器:分布式只写共享变量累加器是用来把Executor端变量信息聚合到Driver端。在Driver程序种定义的变量,在Executor端的每一个task都会得到这个变量的一份新的副本,每个task更新这些副本后,传回Driver端进行merge首先看一个不用累加器的案例scala> val dataRDD = sc.makeRDD(1 to 4, 2)dataRDD: org.apache.spark.rdd.RDD[Int] = ParallelCollectionRDD[5] a原创 2020-12-18 17:33:32 · 1110 阅读 · 1 评论 -
spark每个stage的任务数
一个SparkContext对应一个Application一个Application中会有多个action算子,也就是对应多个job一个job中会有多个宽依赖,就会产生宽依赖个数+1的stage数一个stage中会有多个分区,也就会有多个任务这里需要注意一点的是:同一个stage阶段也会出现分区数变少的情况,这种情况下如何判断分区数?答案是:看每个stage中最后一个RDD的分区个数就是当前stage的task数。scala> sc.makeRDD(1 to 5, 3).glom.coll原创 2020-12-14 14:45:49 · 1560 阅读 · 0 评论 -
spark的groupBy是宽依赖
sc.makeRDD(1 to 8, 3).glom().collect()// 下面是第一行scala语句的结果// res21: Array[Array[Int]] = Array(Array(1, 2), Array(3, 4, 5), Array(6, 7, 8))sc.makeRDD(1 to 8, 3).groupBy(_%2).glom().collect()// 下面是第二行scala语句的结果// res23: Array[Array[(Int, Iterable[Int])]]原创 2020-12-10 18:24:22 · 1413 阅读 · 0 评论 -
spark数据结构
spark计算框架为了能够进行高并发和高吞吐的数据处理,封装了三大数据结构,用于处理不同的应用场景,分别是:RDD:弹性分布式数据集累加器:分布式共享只写变量广播变量:分布式共享只读变量...原创 2020-12-11 14:35:12 · 1076 阅读 · 0 评论