大数据分布式计算工具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())
相关推荐
Data-Miner3 小时前
面对 AI 大模型智能涌现,如何从技术层面保护好隐私与数据安全?
大数据·人工智能
会议咨询4 小时前
2027年电力电子、人工智能与大数据国际会议(PEABD 2027)
大数据·人工智能·电力电子
GlobalInfo5 小时前
全球包装检测用3D轮廓传感器市场调研:2026年规模预计达1.87亿美元,食品医药与电商物流需求推动增长
大数据·人工智能·3d
程序 代码狂人5 小时前
切片表与分区表的区别(数据开发面试版)
java·大数据·开发语言·数据仓库·算法
starzy19907 小时前
Kafka响应发送:字节是怎么真正写回客户端的
大数据·kafka
数字新视界7 小时前
国产动环数据库在智能机房环境监控中的应用与优势分析
大数据·人工智能·数据中心·机房管理·模块化机房
KaiwuDB7 小时前
KaiwuDB 分布式集群扩缩容,从原理到完整操作踩坑总结
运维·数据库·分布式
古法老登瞎折腾8 小时前
大数据智能运维实战(九):让 AI 查日志——找到异常,也保留上下文
java·大数据·运维·人工智能·spring ai·mcp
keyipatience8 小时前
Git学习(2)撤销与分支操作全指南
大数据·elasticsearch·搜索引擎
数字新视界8 小时前
模块化机房的设计与实施原理剖析
大数据·物联网·信息可视化·信息与通信·一体化机柜