![](https://i-blog.csdnimg.cn/columns/default/20201014180756919.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
spark
Dale_w_code
这个作者很懒,什么都没留下…
展开
-
1-3
reduceByKey,aggregateByKey,combineByKey底层调用的都是combineByKeyWithClassTagaggregate算子def aggregate[U: Cla ssTag](zeroValue: U)(seqOp: (U, T) => U, combOp: (U, U) => U): U={}zeroValue:初始值seqOp:局...原创 2019-01-03 21:34:50 · 222 阅读 · 1 评论 -
Spark算子之间的区别
map和mapPartitions的区别map用于处理RDD的每个元素,mapPartitions是用于处理RDD的每个分区map和foreach的区别map属于transformation算子,foreach属于action算子map有返回值,foreach没有返回值map有返回值,foreach没有返回值map常用于将某个RDD做元素的处理,foreach常用于作为结果的输出到其他...原创 2019-01-04 17:58:42 · 639 阅读 · 0 评论 -
Spark中stage的切分以及RDD缓存
RDD的依赖关系描述父RDD和子RDD之间分区的关系窄依赖每一个父RDD的分区最对被子RDD的一个分区使用,一对一宽依赖一个父RDD的分区会被子RDD的多个分区使用,一对多join有两种情况如果在join之前先进行groupByKey操作,join的过程就不会发生shuffle否则就会发生shuffleLineageRDD只支持粗粒度的转换,用来恢复丢失的数据DAG的生成D...翻译 2019-01-04 19:39:40 · 382 阅读 · 0 评论 -
Accumulator
Accumulator比如需要对Driver端的某个变量做累加操作,累加说的就是,数值相加或字符串的拼接,直接使用foreach是实现不了的,因为该算子无法把Executor累加的结果聚合到Driver端,可以使用Accumulator来实现累加的操作注意:Accumulator只能实现累加,而且只能为Driver端的变量做累加Executor无法读取累加的值,只能Driver端读取...转载 2019-01-07 11:34:32 · 564 阅读 · 0 评论 -
cache,persist,checkpoint
如何进行缓存计算RDD之前,先去判断Partition是否需要被缓存,如果需要被缓存,进行Partition计算,然后缓存到内存,可以缓存到memory,如果写到hdfs(外部存储系统),就需要检查checkpoint。调用RDD.cache()后,RDD变成persistRDD,存储级别为MEMORY_ONLY(内存级别),persistRDD告知Driver自己需要被persist,此时调用...原创 2019-01-07 20:37:22 · 215 阅读 · 0 评论 -
SparkSQL实现WC
import org.apache.spark.rdd.RDDimport org.apache.spark.sql.{DataFrame, Row, SparkSession}import org.apache.spark.sql.types.{StringType, StructField, StructType}object SparkSqlWC { def main(args:...原创 2019-01-18 17:11:37 · 242 阅读 · 0 评论