Spark练习-统计不同性别的年龄总和,统计不同性别不同年龄的年龄平均值

news/2024/12/22 9:17:40/

目录

统计不同性别的年龄总和,最大值,最小值,平均值

计算不同性别不同年龄的年龄平均值


统计不同性别的年龄总和,最大值,最小值,平均值

from pyspark import  SparkContext
sc = SparkContext()# 1- 读取hdfs中的学生数据
rdd = sc.textFile('hdfs://node1:8020/data/student.txt')# 2- 使用转化算子进行数据处理
# map中的lambda表达式,必须定义一个参数,用来接收rdd中的元素数据, 注意:x参数如何处理,要看x接收的数据类型
rdd2 = rdd.map(lambda x:x.split(','))# 将转换后的kv进行分组,把分组的字段作为key值
rdd3 = rdd2.map(lambda x:(x[2],x))
# 使用groupbykey方法,按照key进行分组rdd4 = rdd3.groupByKey()  # ('F', <pyspark.resultiterable.ResultIterable object at 0x7f7fea109760>)
# 需要使用mapvalue转化分组后的数据
rdd5 = rdd4.mapValues(lambda x:list(x))## todo 统计不同性别的年龄总和 最大值 最小值 平均值
# 将需要计算的数据转为kv结构   分组的字段是key值  聚合数据是value值
rdd6 = rdd2.map(lambda x:(x[2],int(x[3])))# 使用reduceBykey方式进行聚合计算  会将相同key值的数据先合并,然后在聚合计算
# 聚合计算的算子,lambda x,y 需要结构两个参数
# 计算总和
rdd7 = rdd6.reduceByKey(lambda x,y:x+y)  # 使用有局限性,无法进行平均数  最大值 最小值 数量  总数/数量# 计算平均值
rdd8 = rdd6.groupByKey().mapValues(lambda x:sum(list(x)) / len(list(x)))# 计算最大值
rdd9 = rdd6.groupByKey().mapValues(lambda x:max(list(x)))# 计算最小值
rdd10 = rdd6.groupByKey().mapValues(lambda x:min(list(x)))# 查看数据res6 = rdd6.collect()
print(res6)res7 = rdd7.collect()
print(res7)res8 = rdd8.collect()
print(res8)res9 = rdd9.collect()
print(res9)res10 = rdd10.collect()
print(res10)

计算不同性别不同年龄的年龄平均值

from pyspark import SparkContext
sc = SparkContext()# 1-读取文件数据
rdd = sc.textFile('hdfs://node1:8020/data/students.txt')# 2-切割每行数据
rdd_line = rdd.map(lambda x:x.split(','))#  计算不同性别不同年级的年龄平均值
# 方式一  (x[2],x[4])
rdd_kv2 = rdd_line.map(lambda x : ((x[2],x[4]),int(x[3])))
rdd_res2 = rdd_kv2.groupByKey().mapValues(lambda x : sum(list(x)) / len(list(x)))# 方式二  x[2]+x[4]
rdd_kv3 = rdd_line.map(lambda x : (x[2]+x[4],int(x[3])))
rdd_res3 = rdd_kv2.groupByKey().mapValues(lambda x : sum(list(x)) / len(list(x)))# 3-查看数据res3 = rdd_kv2.collect()
print(res3)
res4 = rdd_res2.collect()
print(res4)res6 = rdd_res3.collect()
print(res6)
res7 = rdd_res3.collect()
print(res7)

虽然两种map不同,但是结果相同


http://www.ppmy.cn/news/1537038.html

相关文章

CSS多列

CSS多列 前言 有的时候希望文本能按照多列效果显示&#xff0c;如&#xff1a; 这时候就要把文本显示效果改成多列显示&#xff0c;标题独占一行 CSS文本多列使用 ① column-count 指定文本分为几列&#xff0c;如&#xff1a; column-count: 3;② column-gap 指定列之…

【C语言系统编程】【第三部分:网络编程】3.2 数据传输和协议

3.2 数据传输和协议 这一部分将探索网络传输中数据的组织和操纵方式&#xff0c;包括数据封包和拆包、数据完整性校验以及数据序列化与反序列化的方法。这些知识对确保数据可靠和高效传输至关重要。 3.2.1 数据传输 3.2.1.1 数据封包与拆包 定义&#xff1a;数据封包是指将数…

PHP如何更改要上传的文件大小的最大值

在PHP中&#xff0c;要更改要上传的文件大小的最大值&#xff0c;需要调整一些配置文件和参数。这些参数决定了PHP脚本可以处理的最大文件大小、上传文件的最大大小以及脚本可以使用的最大内存量等。以下是一些详细的步骤和参数解释&#xff0c;帮助你配置PHP以允许更大的文件上…

chatGPT模型接口分享

前言: 仅供学习和交流&#xff0c;请合理使用。 API&#xff1a;https://api.gptnet.org key&#xff1a;sk-x9Rmq3HeHh5z9EIi8wFaXCl02OfxRSk5UAFodYm1o4zo5X3i 支持模型&#xff1a;gpt-3.5-turbo、gpt-3.5-turbo-16k、gpt-4o-mini、llama-3.1-405b 暂时支持以上四个模型…

44 C 语言输入输出流、scanf 与 printf 函数详解、清除输入缓冲区

目录 1 文件基本介绍 1.1 文件的主要功能 1.2 输入输出流 2 C 语言中的输入与输出 2.1 输入 2.2 输出 2.3 标准文件与文件指针 3 scanf() 函数详解 3.1 功能描述 3.2 函数原型 3.3 常用格式说明符 3.4 返回值 3.5 注意事项 3.5.1 处理空白字符 3.5.2 防止缓冲区…

Object.defineProperty()总结

概述&#xff1a;Object.defineProperty() 方法用于在对象上定义或修改一个属性 语法&#xff1a; //obj&#xff1a;要在其上定义或修改属性的对象。 //prop&#xff1a;要定义或修改的属性的名称或 Symbol。 //descriptor&#xff1a;定义或修改属性的属性描述符。 Object.…

打不死的超强生命力

水熊虫是你可能听说过的小生物&#xff0c;它们能够在极端环境中生存&#xff0c;堪称地球上的“超强幸存者”。数十年来&#xff0c;科学家们试图通过各种极端实验杀死它们&#xff0c;但无论是把它们以900米/秒的速度发射&#xff0c;还是将它们暴露在宇宙辐射下&#xff0c;…

MR30系列IO——工业自动化的智慧纽带

一、引言 在工业自动化技术的广阔天地中&#xff0c;MR30系列IO模块、数字量模块以及模拟量模块构成了控制系统的核心基石。它们被广泛应用于可编程逻辑控制器&#xff08;PLC&#xff09;、分布式控制系统&#xff08;DCS&#xff09;等多种自动化系统中&#xff0c;为工业生…