大数据分布式计算工具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())
相关推荐
大数据追光猿5 小时前
Python应用算法之贪心算法理解和实践
大数据·开发语言·人工智能·python·深度学习·算法·贪心算法
roman_日积跬步-终至千里6 小时前
【分布式理论16】分布式调度2:资源划分和调度策略
分布式
人类群星闪耀时7 小时前
物联网与大数据:揭秘万物互联的新纪元
大数据·物联网·struts
快手技术7 小时前
Blaze RangePartitioning 算子Native实现全解析
spark·naive
DC_BLOG10 小时前
Linux-GlusterFS进阶分布式卷
linux·运维·服务器·分布式
点点滴滴的记录11 小时前
分布式之Raft算法
分布式
桃林春风一杯酒13 小时前
HADOOP_HOME and hadoop.home.dir are unset.
大数据·hadoop·分布式
桃木山人13 小时前
BigData File Viewer报错
大数据·java-ee·github·bigdata
B站计算机毕业设计超人13 小时前
计算机毕业设计Python+DeepSeek-R1高考推荐系统 高考分数线预测 大数据毕设(源码+LW文档+PPT+讲解)
大数据·python·机器学习·网络爬虫·课程设计·数据可视化·推荐算法
数造科技14 小时前
紧随“可信数据空间”政策风潮,数造科技正式加入开放数据空间联盟
大数据·人工智能·科技·安全·敏捷开发