转换算子(延迟执行,也叫懒加载执行)(返回值不改变类型)
map :将RDD中数据通过map映射变成新的元素…特点:输入一条,输出一条数据flatMap :先map后flat,每个输出项可以映射为0到多个输出项reduceBykey :将相同的Key根据相应的逻辑进行处理filter :过滤,true保留,false过滤samper :随机抽样算子,根据传进去的小数按比例进行又放回或者无放回的抽样sortBy / sortBykey :作用在K,V格式的RDD上,对key进行升序或者降序排序join / leftOuterJoin / rightOuterJoin / fullOuterJoin 连接 作用在K,V格式的RDD上。根据K进行连接,对(K,V)join(K,W)返回(K,(V,W))join后的分区数与父RDD分区数多的那一个相同 union 并集 合并两个数据集。两个数据集的类型要一致返回新的RDD的分区数是合并RDD分区数的总和 intersection 交集 取两个数据集的交集 subtract 差集 取两个数据集的差集 mapPartition 输入一个pattition,输出一个pattition 与map类似,遍历的单位是每个partition上的数据 distinct 去重 map+reduceByKey+map触发算子(触发执行)一个application应用程序中有几个Action类算子执行,就有几个job运行
count :返回数据集中的元素数。会在结果计算完成后回收到Driver端take :返回一个包含数据集前n个元素的集合first :first=take(1),返回数据集中的第一个元素foreach:循环遍历数据集中的每个元素,运行相应的逻辑collect:将计算结果回收到Driver端foreachPartition :遍历的数据是每个partition的数据控制算子(都可以将RDD持久化)(持久化的单位是partition)
cache(用来优化) 默认将数据持久化到内存中.cache()=perisit()=persist(StorageLevel.Memory_Only) perisit(用来优化) 可以指定持久化的级别,常用的是MEMORY_ONLY和MEMORY_AND_DISK。”_2”表示有副本数。持久化级别cache和persist的注意事项 都是懒执行,必须要一个action类算子触发执行它们的返回值可以直接赋值给一个变量,其它job中直接使用这个变量就是使用持久化的数据了cache和persist算子后不能立即紧跟action算子 错误:rdd.cache().count() 返回的不是持久化的RDD,而是一个数值了。 checkpoint(用来容错) checkpoint将RDD持久化到磁盘,还可以切断RDD之间的依赖关系。 当RDD的job执行完毕后,会从finalRDD从后往前回溯当回溯到某一个RDD调用了checkpoint方法,会对当前的RDD做一个标记Spark框架会自动启动一个新的job,重新计算这个RDD的数据,将数据持久化到HDFS上 优化: RDD执行checkpoint之前,RDD先执行cache,先持久化到内存中,这样启动新的job只需要将内存中的数据拷贝到HDFS上就可以,省去了重新计算这一步 4.Standalone模式两种提交任务方式 客户端模式 启动时worker向master发送本机资源client模式提交application后,会在相应的节点上开启一个Driver进程Driver会向Master申请启动Applicatin启动的资源资源申请成功后,会在worker节点上开启executor进程driver向Worker上的executor发送task任务worker上的excutor向driver发送task的执行结果该模式使用与测试环境,Driver进程在客户端启动,可以看到task执行的结果 cluster集群模式 集群模式启动后,会向Master发送请求启动driver,master接收到请求后会随机的在worker节点中启动driver进程driver向master申请启动application的资源driver向worker发送task任务worker向driver发送task的执行结果 总结 driver负责资源的申请任务的发放结果的回收监控task的执行情况 5,Yarm的两种提交方式 客户端模式 客户端提交appliation任务时,会启动一个driver.driver向resourmanager发送请求启动appliationMasterresourcemanager收到请求后随机在nodemanager中开启一个appliationManagerappliationMaster启动后向resourcemanager发送请求一批container,开启executorresourManager返回一批nodemanager,用于启动excutorapplictionMaster向nodemanager发送开启executorexecutor启动后,反向注册给driver,driver发送task给excutor,excutor发送执行结果给driver 注意: ApplicationMaster的作用 为当前的Application申请资源给NodeManager发送消息启动Executor 集群启动模式 客户端提交appliction到resourcemanager,请求启动applicationMasterresourceManager接到请求后随机在nodeManager上启动AM(相当于driver)AM发送请求到resourceManager,请求一批container,用于启动executorresourceManager返回一批nodeManagerAM发送请求给nodeManager启动executorexecutor反向注册到AM所在的节点的driver,Driver发送task到Executor
r,请求一批container,用于启动executor
resourcemanager返回一批nodeManagerAM发送请求给nodeManager启动executorexecutor反向注册到AM所在的节点的driver,Driver发送task到Executor