Spark RDD常见转换和动作

xiaoxiao2021-02-27  187

Spark在提交后通过数据输入形成RDD,然后就可以通过转换算子(如filter,map)对数据进行操作并将RDD转换为新的RDD,然后通过action算子,出发Spark提交作业

转换操作:
转换操作有值类型的和键值(key/value)类型的转换,两者都不会触发提交作业map:最常见的操作即将rdd中每个数据想通过用户自定函数映射成新的元素,如rdd1:RDD[Int],rdd1.map(f=>(f,f*f))flatMap(func):类似于map,但每一个输入元素可以被映射成为一个或多个输出元素filter(func):返回一个经过过滤后的新数据集,过滤方式为func自定义的任意类型,对于每个项进行操作,返回true的数据项进行保留,新的数据集为上一个的子集mapPartitions:获取每个分区的迭代器,在函数中通过这个分区的整体迭代器对整个分区的元素进行操作union:合并两个相同类型的rdd,并且不进行去重操作,类似于sql的中union,由于没有union all操作,如果要去重的话可以使用rdd.distinct,rdd1++rdd2相当于union操作subtract:相当于两个rdd进行差集的操作,如rdd1.subtract(rdd2),相当于去除rdd1中所有不存在rdd2中的元素,有点类似not in操作filter(f):过滤用的,过滤符合f函数或表达式为true的数据出来distinct();返回一个去重后的新的RddgroupByKey():返回聚合之后Key-Value集合Dataset,例如{[1,2],[1,3],[2,4],[2,4]},groupByKey之后{[1,[2,3]],[2,[4,4]]}
Action操作
reduce(f):将Rdd聚集,使用指定的可交换和关联的二进制运算符减少此RDD的元素。collect():返回Rdd中所有的集合,量大的谨慎使用count() :获取RDD集合中元素个数first():返回第一个元素take(n):获取rdd中前N个元素foreach(f):将函数f应用于此RDD的所有元素saveAsTextFile(path: String, codec: Class[_ <: CompressionCodec]):将Rdd存储为text 文件,一般在hdfs中,rdd中每个元素为一行
转载请注明原文地址: https://www.6miu.com/read-9347.html

最新回复(0)