transformation:
JavaRDD<T> : flatMap => JavaRDD<T> : Iterator<T>
JavaRDD<T> : mapToPair => JavaPairRDD<T,T> : Tuple2<T,T>
JavaRDD<T> : reduceByKey=> JavaPairRDD<T,T> : v1+v2
groupByKey,combineByKey
action:
count,first,collectAsMap,countByKey
Spark简述:
1.每个Application由1个Driver和多个Worker组成,driver可通过YARN或其他资源调度工具与worker联系。
2.driver发起的JOB,通过YARN找到满足资源要求的分布式节点,并创立executor,然后executor去driver注册,driver将代码与文件传送给executor。taskset,task.....
3.每个JOB,转为DAG,再分为stage1,stage2,stage3......宽依赖的转换要在不同的stage(子RDD的某一分区依赖于某一父RDD的>=2个分区,即为宽依赖,我的理解~)
4.RDD的Lineage与checkpoint,血缘关系是容错机制实现的根本原因。当transformation出错时,如果是窄依赖,可直接快速从父RDD重新计算;如果是宽依赖,则麻烦些。
应用场景:
1.spark离线计算数据,sparkSQL提供数据查询
2.社交关系相关,GraphX
3.实时监测数据,比如spark计算历史数据,用MLlib算出模型,再通过sparkStreaming比较
以上为学习内容的不完全复述,部分内容实践。