大数据分布式计算工具Spark数据计算实战讲解(filter方法,distinct方法,sortby方法)(1)

# #单词统计计数
from pyspark import SparkConf, SparkContext
import os
os.environ['pyspark_python'] = "D:/python/JIESHIQI/python.exe"
#创建一个sparkconf类对象
conf = SparkConf().setMaster("local[*]").setAppName("test_spark_app")

#基于sparkconf类对象创建sparkcontext类对象
sc = SparkContext(conf=conf)
#读取文件信息
rdd = sc.textFile("D:/hello.txt")
#取出全部的单词
word_rdd = rdd.flatMap(lambda x: x.split(" "))
print(word_rdd.collect())
#['apple', 'bean', 'banana', 'spark', 'haoop', 'python', 'java', 'go', 'c++']

#将所有单词都转换成二元元组,单词为key,value设置为1
rdd2 = word_rdd.map(lambda word: (word, 1))
print(rdd2.collect())
#[('apple', 1), ('bean', 1), ('banana', 1), ('spark', 1), ('haoop', 1), ('python', 1), ('java', 1), ('go', 1), ('c++', 1)]

#分组并求和
rdd3 = rdd2.reduceByKey(lambda a, b: a+b)
print(rdd3.collect())

filter方法

功能:过滤想要的数据进行保留

from pyspark import SparkConf, SparkContext
import os
os.environ['pyspark_python'] = "D:/python/JIESHIQI/python.exe"
#创建一个sparkconf类对象
conf = SparkConf().setMaster("local[*]").setAppName("test_spark_app")

#基于sparkconf类对象创建sparkcontext类对象
sc = SparkContext(conf=conf)

#准备一个rdd
rdd = sc.parallelize([1,2,3,4,5])
#对rdd的数据进行过滤
rdd2 = rdd.filter(lambda num: num % 2 == 0)

print(rdd2.collect()) #[2, 4]

distinct算子

功能:对rdd数据进行去重,返回新rdd

from pyspark import SparkConf, SparkContext
import os
os.environ['pyspark_python'] = "D:/python/JIESHIQI/python.exe"
#创建一个sparkconf类对象
conf = SparkConf().setMaster("local[*]").setAppName("test_spark_app")

#基于sparkconf类对象创建sparkcontext类对象
sc = SparkContext(conf=conf)

#准备一个rdd
rdd = sc.parallelize([1,2,3,4,5,2,1,3,4,5])
#对rdd的数据进行过滤
# rdd2 = rdd.filter(lambda num: num % 2 == 0)

print(rdd.distinct().collect()) 
#[1, 2, 3, 4, 5]

sortby算子

功能:对rdd数据进行排序,基于你指定的排序依据

from pyspark import SparkConf, SparkContext
import os
os.environ['pyspark_python'] = "D:/python/JIESHIQI/python.exe"
#创建一个sparkconf类对象
conf = SparkConf().setMaster("local[*]").setAppName("test_spark_app")

#基于sparkconf类对象创建sparkcontext类对象
sc = SparkContext(conf=conf)
#读取文件信息
rdd = sc.textFile("D:/hello.txt")
#取出全部的单词
word_rdd = rdd.flatMap(lambda x: x.split(" "))
print(word_rdd.collect())
#['apple', 'bean', 'banana', 'spark', 'haoop', 'python', 'java', 'go', 'c++']

#将所有单词都转换成二元元组,单词为key,value设置为1
rdd2 = word_rdd.map(lambda word: (word, 1))
print(rdd2.collect())
#[('apple', 1), ('bean', 1), ('banana', 1), ('spark', 1), ('haoop', 1), ('python', 1), ('java', 1), ('go', 1), ('c++', 1)]



![img](https://img-blog.csdnimg.cn/img_convert/3867af169609a25ae9cdd61b123aeb88.png)
![img](https://img-blog.csdnimg.cn/img_convert/6b149fca6c666f066008451645d79b72.png)

**网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。**

**[需要这份系统化资料的朋友,可以戳这里获取](https://bbs.youkuaiyun.com/topics/618545628)**


**一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!**

8545628)**


**一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!**

### Spark RDD 集合操作方法 Spark RDD 提供了丰富的集合操作方法,用于对分布式数据集进行转换和行动操作。以下是常见的集合操作方法: #### 转换操作(Transformation) - **map(func)**: 对 RDD 中的每个元素应用函数 `func`,并将结果返回为新的 RDD[^5]。 - **filter(func)**: 根据布尔函数 `func` 筛选 RDD 中的元素,返回满足条件的元素组成的新的 RDD[^5]。 - **flatMap(func)**: 类似于 `map`,但将结果展平为单个 RDD[^2]。 - **union(otherRDD)**: 返回两个 RDD 的并集[^4]。 - **intersection(otherRDD)**: 返回两个 RDD 的交集[^4]。 - **subtract(otherRDD)**: 返回当前 RDD 中不在另一个 RDD 中的元素[^4]。 - **distinct([numPartitions])**: 返回去重后的 RDD,可指定分区数量[^4]。 #### 行动操作(Action) - **collect()**: 将 RDD 的所有元素收集到驱动程序中,以数组形式返回[^5]。 - **count()**: 返回 RDD 中的元素总数[^3]。 - **take(n)**: 返回 RDD 的前 n 个元素。 - **reduce(func)**: 使用二元函数 `func` 对 RDD 的所有元素进行聚合操作。 - **foreach(func)**: 对 RDD 的每个元素应用函数 `func`,通常用于副作用操作[^5]。 --- ### sortBy 方法的三个参数 `sortBy` 是 Spark RDD 的一个转换操作方法,用于对 RDD 的元素进行排序。该方法具有以下三个参数: #### 参数 1:排序函数 第一个参数是一个函数,用于定义排序的关键字段。这个函数会作用于 RDD 的每个元素,返回一个值作为排序依据[^6]。 ```python # 示例:按元素大小升序排序 rdd = sc.parallelize([5, 3, 8, 1]) sorted_rdd = rdd.sortBy(lambda x: x) ``` #### 参数 2:升序标志 第二个参数是一个布尔值,用于指定排序顺序。如果设置为 `True`(默认值),则按升序排序;如果设置为 `False`,则按降序排序[^6]。 ```python # 示例:按元素大小降序排序 sorted_rdd_desc = rdd.sortBy(lambda x: x, ascending=False) ``` #### 参数 3:分区数量 第三个参数是可选的,用于指定排序后的 RDD 的分区数量。通过调整分区数量,可以优化性能或减少 Shuffle 操作带来的开销。如果未指定此参数,则默认使用 RDD 的当前分区数量[^6]。 ```python # 示例:按元素大小升序排序,并指定分区数量为 4 sorted_rdd_with_partitions = rdd.sortBy(lambda x: x, ascending=True, numPartitions=4) ``` --- ###
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值