功能:
过滤数据
对RDD集合中的每个元素调用一次参数中的表达式对数据进行过滤,符合条件就保留,不符合就去除
语法:
def filter(self, f: T -> bool ) -> RDD[T]
f:代表参数是一个函数
T:代表RDD中的每个元素
U:代表RDD中每个元素转换的结果
举例:
需求:去除不一样的数据(第三行和第五行数据为不一样的数据):
1 周杰伦 0 夜曲/发如雪/东风破/七里香
2 陈奕迅 0 十年/爱情转移/你的背包
3 1 日不落/舞娘/倒带
4 赵雷 0 鼓楼/成都/吉姆餐厅/无法长大
5 凤凰传奇 -1 月亮之上/荷塘月色
代码:
如何构造sc对象并创建RDD 参考文章:
【Spark中创建RDD的两种方式】Spark中如何获取sc对象、以及创建RDD的两种方式
# 读取数据,并将读取到的数据转换为RDD
fileRdd = sc.textFile("../datas/b.txt",2)
# 使用正则切割,其中 r 表示 \ 不转义,切割完判断
filterRdd = fileRdd.filter(lambda line: re.split(r"\s",line)[2] != '-1' and len(re.split("\\s",line)) == 4)
# foreach为触发算子,用于打印
filterRdd.foreach(lambda x: print(x))