大数据分布式计算工具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())
相关推荐
智恒百亿2 分钟前
AI服务器涨价15%背后:5090八卡智算服务器的选型与成本分析
大数据·服务器·人工智能·github
中科同志科技3 分钟前
元器件拆焊真空焊接设备深度解读:工艺流程与优化策略
大数据·人工智能·机器人·汽车
枫彩18 分钟前
WorkBuddy 做A股自动复盘实战:数据校验、工具调用与定时报告
大数据·网络·数据库·a股·mcp·workbuddy
敖行客 Allthinker27 分钟前
分布式远程研发团队,借助云 IDE 统一开发环境
ide·分布式
晓子文集28 分钟前
Tushare接口文档:每日停复牌信息(suspend_d)
大数据·数据库·金融·金融数据·量化投资
IT毕设实战小研42 分钟前
基于大数据的桂林热门旅游数据分析与可视化
大数据·python·机器学习·数据分析·django·课程设计·旅游
大海变好AI1 小时前
AI 工作流怎么搭建提升效率
大数据·人工智能·python
裕晟资质规划1 小时前
首次办理军工保密资质:咨询服务选择要点与全流程交付清单(评估框架)
大数据·运维·服务器·网络·数据库·经验分享
whcyhhh1 小时前
头歌实践教学平台:数据科学与大数据技术导论(十)
大数据·开发语言·python
Data_Journal9 小时前
用于网页抓取的 Node-unblocker
大数据·开发语言·数据库·python·scrapy