Cache
RDDA ==> RDDB ==> RDDC
对相同的RDD做action操作
cache和persist的区别
cache lazy
val map = ..... //100M
10000tasks ==> ....M
100 executor
BroadcastJoin = MapJoin
read-only
Lineage 血缘关系/血统
A =map=> B =filter=>C
可以知道:一个RDD是如何从父RDD计算过来的
Denpendence
Narrow 一个父RDD的partition至多被子RDD的某个partition使用一次
Wide 一个父RDD的partition会被子RDD的某个partition使用多次
Wide ==> Shuffle ==> 拆成2个stage
join/xxbykey
sc.textFile("file:///home/hadoop/data/ruozeinput.txt").flatMap(_.split("\t")).map((_,1)).reduceByKey(_+_).collect
RDD: 100
Spark: partition == task
coalesce(10) ==> 100 ==> 10
repartition 10==>50
100w 10 10w
50 2w
emp.txt 求comm为空的总数
rdd.filter().map().filter().filter().coalesce(10).save....
1个分区 100 10 8 6
100分区 ===> 100task ==> 100 file
RDDA ==> RDDB ==> RDDC
对相同的RDD做action操作
cache和persist的区别
cache lazy
val map = ..... //100M
10000tasks ==> ....M
100 executor
BroadcastJoin = MapJoin
read-only
Lineage 血缘关系/血统
A =map=> B =filter=>C
可以知道:一个RDD是如何从父RDD计算过来的
Denpendence
Narrow 一个父RDD的partition至多被子RDD的某个partition使用一次
Wide 一个父RDD的partition会被子RDD的某个partition使用多次
Wide ==> Shuffle ==> 拆成2个stage
join/xxbykey
sc.textFile("file:///home/hadoop/data/ruozeinput.txt").flatMap(_.split("\t")).map((_,1)).reduceByKey(_+_).collect
RDD: 100
Spark: partition == task
coalesce(10) ==> 100 ==> 10
repartition 10==>50
100w 10 10w
50 2w
emp.txt 求comm为空的总数
rdd.filter().map().filter().filter().coalesce(10).save....
1个分区 100 10 8 6
100分区 ===> 100task ==> 100 file
看官网:Performance Impact 有shuffle的影响描述