RDD转换操作算子 — filter、sample


  • filter 可以过滤一部分的元素,达到数据清洗的效果
  • filter 中接受的函数,参数是每一个元素。如果函数返回的为true,就将该元素加入到新的RDD中,为false就会被过滤掉
@Test
def filterTest: Unit ={

//创建数据集,利用filter清洗数据 --- 取奇数
val source = sc.parallelize(Seq(1,2,3,4,5,6,7,8,9,10))

//调用filter
source.filter(item => item % 2 != 0)
.collect()
.foreach(item => println(item))
}
1
3
5
7
9
  • sample 算子可以从一个大数据集中抽取一部分样例,常用作减小数据集以保证运行速度,并且尽可能地减小规律的损失
  • withReplacement: 是否有放回。 true — 抽样有重复 false — 抽样不重复
  • fraction: 抽样比例
  • seed: 随机种子
@Test
def sampleTest: Unit ={
val rdd1 = sc.parallelize(Seq(0,1,2,3,4,5,6,7,8,9,10))
val rdd2 = rdd1.sample(true,0.6)
val result = rdd2.collect()
result.foreach( item => println(item))
}
  • distinct:对RDD中的元素进行去重。
@Test
def distinct(): Unit ={
val a = sc.parallelize(Seq(1,2,3,4))
val b = sc.parallelize(Seq(3,4,5,6))
val dt= a.union(b).distinct()
.collect()
dt.foreach(println(_))
}
1
2
3
4
5
6