Spark 的一些内容
1.函数作用以及返回值类型
foreachflatMap 返回的迭代器的所有内容构成新的RDD 是一个序列化的数据而不是单个数据项-- a Seqmap map:对集合中每个元素进行操作。 flatMap:对集合中每个元素进行操作然后再扁平化。 groupByKey():--作用以及返回值类型 --对具有相同键的值进行分组 groupByKey也是对每个key进行操作,但只生成一个sequence [K, Iterable[V]]reduceByKey() ---------------------------- 合并具有相同键的值 规约,对具有键相同的值合并起来--返回 各键以及 对应键规约出来的结果值 组成的新的RDD 对大数据进行复杂计算时,reduceByKey优于groupByKey
2.关于分区
01.Spark提供基于分区的map和foreach mapPartitions foreachPartition 从算子的类型: foreachPartition应该属于action运算操作,而 mapPartitions 是在Transformation中 返回值上:mapPartitions 返回值类型迭代器: Iterator[U] 该元素的迭代器 应用场景上: mapPartitions可以获取返回值,继续在返回RDD上做其他的操作 foreachPartition因为没有返回值并且是action操作,所以使用它一般都是在程序末尾比如说要落地数据到存储系统中如mysql,es,或者hbase中,02.并行度 001.对于已知的RDD进行重分区 002.数据混洗操作中,使用参数的方式为混洗后的RDD指定并行度重分区: repartition() 把RDD随机打乱并分成设定的分区数目 coalesce():减少分区--没有打乱 对RDD的分区进行重新划分,repartition内部调用了coalesce,参数shuffle为true 扩大分区 减少分区 coalesce算子,可以手动减少DataFrame的partition数量,并且不用触发shuffle, 这也是coalesce跟repartition的区别 repartition一定会触发shuffle