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

练习案例

python 复制代码
# #单词统计计数
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方法

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

python 复制代码
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

python 复制代码
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数据进行排序,基于你指定的排序依据

python 复制代码
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())

#对结果进行排序
final_rdd = rdd3.sortBy(lambda x: x[1],ascending=True,numPartitions=1)
print(final_rdd)

练习案例

需求,复制以上内容到文件中,使用Spark读取文件进行计算:

•各个城市销售额排名,从大到小

•全部城市,有哪些商品类别在售卖

•北京市有哪些商品类别在售卖

python 复制代码
from pyspark import SparkConf, SparkContext
import os
import json
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
file_rdd = sc.textFile("D:/hello.txt")
#取出一个个JSON字符串
josn_str = file_rdd.flatMap(lambda x: x.split("|"))
#将一个个json字符串转换为字典
dict_rdd = josn_str.map(lambda x: json.loads(x))
# print(dict_rdd.collect())
#取出城市和销售额的排行
value_rdd = dict_rdd.map(lambda x: (x['areaName'],int(x['money'])))
#按城市分组按销售额聚合
rdd2 = value_rdd.reduceByKey(lambda a,b: a+b)
result1 = rdd2.sortBy(lambda x: x[1],ascending=False,numPartitions=1)
print(result1.collect())
#[('北京', 91556), ('杭州', 28831), ('天津', 12260), ('上海', 1513), ('郑州', 1120)]
#取出全部的商品的类别
category_rdd = dict_rdd.map(lambda x: x['category']).distinct()
print(category_rdd.collect())
#['电脑', '家电', '食品', '平板电脑', '手机', '家具', '书籍', '服饰']

#过滤北京市的数据
beijing_data = dict_rdd.filter(lambda x: x['areaName'] == '北京')
print(beijing_data.collect())
相关推荐
爱丽_28 分钟前
Redis 分布式锁:SET NX、过期时间、续租、可重入、Redlock 与坑
数据库·redis·分布式
Elastic 中国社区官方博客1 小时前
Elasticsearch:如何在 Elastic AI Builder 里使用 DSL 来查询 Elasticsearch
大数据·人工智能·elasticsearch·搜索引擎·ai·全文检索
tian_jiangnan1 小时前
flink大数据15天速成教程
大数据·flink
一休哥※2 小时前
ClawTeam 完整使用教程:用 AI 多智能体团队自动完成复杂任务
大数据·人工智能·elasticsearch
yitian_hm2 小时前
HBase 原理深度剖析:从数据模型到存储机制
大数据·数据库·hbase
鹧鸪云光伏3 小时前
微电网设计系统及经济收益计算
大数据·人工智能·光伏·储能设计方案
国冶机电安装3 小时前
其他弱电系统安装:从方案设计到落地施工的完整指南
大数据·运维·网络
蓝天守卫者联盟13 小时前
玩具喷涂废气治理厂家:行业现状、技术路径与选型指南
大数据·运维·人工智能·python
ok_hahaha3 小时前
java从头开始-黑马点评-分布式锁-redis实现基础版
java·redis·分布式
LaughingZhu3 小时前
Product Hunt 每日热榜 | 2026-03-30
大数据·数据库·人工智能·经验分享·搜索引擎