Python之PySpark简单应用
文章目录
- 一、介绍
- 1.准备工作
- 2. 创建SparkSession对象:
- 3. 读取数据:
- 4. 数据处理与分析:
- 5. 停止SparkSession:
- 二、示例
- 1.读取解析csv数据
- 2.解析计算序列数据map\flatmap
- 三、问题总结
- 1.代码问题
- 2.配置问题
一、介绍
PySpark是Apache Spark的Python API,它允许开发人员使用Python编写并运行分布式大数据处理应用程序。通过PySpark,开发人员可以利用Spark的强大功能和高性能,同时享受Python编程语言的灵活性和易用性。
1.准备工作
pip install pyspark
2. 创建SparkSession对象:
from pyspark.sql import SparkSessionspark = SparkSession.builder \.appName("example-app") \.getOrCreate()
3. 读取数据:
df = spark.read.csv("test.csv", header=True)
4. 数据处理与分析:
result = df.groupBy("column").count().show()
5. 停止SparkSession:
spark.stop()
二、示例
1.读取解析csv数据
下面是一个简单的示例,演示了如何使用PySpark进行数据处理和分析:
from pyspark.sql import SparkSession# 创建SparkSession对象
spark = SparkSession.builder.appName("example").getOrCreate()# 读取CSV文件
df = spark.read.csv("C:/Users/39824/Desktop/test.csv", header=True)# 对数据进行筛选和聚合操作
result = df.filter(df["age"] > 25).groupBy("department").count()
# 显示结果
result.show()
# 停止SparkSession
spark.stop()
在这个示例中,我们首先创建了一个SparkSession对象,然后使用该对象读取了一个CSV文件。接着,我们对数据进行了筛选和聚合操作,并最终显示了结果。最后,我们停止了SparkSession以释放资源。
输出:
2.解析计算序列数据map\flatmap
from pyspark import SparkConf, SparkContextconf = SparkConf().setAppName("create rdd").setMaster("local[*]")
sc = SparkContext(conf=conf)rdd = sc.parallelize([1, 2, 3, 4, 5, 6, 7, 8, 9])rdd1 = rdd.map(lambda x: x * 10)
print(rdd1.collect())rdd_str = sc.parallelize(["java.io.FileNotFoundException", "sc.setLogLevel(newLevel)", "hadoop.home.dir"])rdd_str1 = rdd_str.map(lambda x: x.split("."))
print(f"map解析的结果是:{rdd_str1.collect()}")rdd_str2 = rdd_str.flatMap(lambda x: x.split("."))
print(f"flatMap解析的结果是:{rdd_str2.collect()}")
输出:
[10, 20, 30, 40, 50, 60, 70, 80, 90]
map解析的结果是:[['java', 'io', 'FileNotFoundException'], ['sc', 'setLogLevel(newLevel)'], ['hadoop', 'home', 'dir']]
flatMap解析的结果是:['java', 'io', 'FileNotFoundException', 'sc', 'setLogLevel(newLevel)', 'hadoop', 'home', 'dir']
使用 PySpark 创建了一个 RDD,并对其进行了 map 和 flatMap 转换:
- 使用
sc.parallelize()
方法创建了一个整数类型的 RDD,其中包含数字1到9。 - 对 RDD 进行
map
转换,将每个元素乘以10。 - 使用
print
函数输出 map 后的结果。 - 使用
sc.parallelize()
方法创建了一个字符串类型的 RDD,其中包含三个字符串。 - 对 RDD 进行
map
转换,将每个字符串按照 “.” 分隔成多个子字符串。 - 使用
print
函数输出 map 后的结果。 - 对 RDD 进行
flatMap
转换,将每个字符串按照 “.” 分隔成多个子字符串,并将所有子字符串扁平化为一维列表。
总结:
map
函数将输入 RDD 的每个元素应用于给定的函数,并返回一个新的 RDD,其中包含函数应用后的结果。flatMap
函数与map
函数类似,但它的输出是一个扁平化的结果。也就是说,对于每个输入元素,函数可以返回一个或多个输出元素,并将所有输出元素进行扁平化。- 可以使用
collect()
函数将 RDD 中的所有元素收集到本地计算机上,并将其作为列表返回。需要注意的是,如果 RDD 中的元素非常多,则可能会导致内存不足或性能问题。
PySpark提供了丰富的数据处理和分析功能,同时也具备了Python编程语言的灵活性和易用性,使得开发人员能够以简洁的方式编写大规模数据处理应用程序。
三、问题总结
1.代码问题
报错:
Traceback (most recent call last):File "D:\demo\pyspark_demo\demo.py", line 3, in <module>conf = SparkConf.setAppName("create rdd").setMaster("local[*]")
TypeError: SparkConf.setAppName() missing 1 required positional argument: 'value'
报错中直接指出具体报错行,经过检查发现SparkConf没有写括号
更正代码:
conf = SparkConf().setAppName("create rdd").setMaster("local[*]")
2.配置问题
报错:
java.io.IOException: Cannot run program "python3": CreateProcess error=3, 系统找不到指定的路径。
解决方式:
找到本地的python.exe,copy之后改名字python3.exe。重启解决~~~~(真是意想不到!!!!)
相关文章:

Python之PySpark简单应用
文章目录 一、介绍1.准备工作2. 创建SparkSession对象:3. 读取数据:4. 数据处理与分析:5. 停止SparkSession: 二、示例1.读取解析csv数据2.解析计算序列数据map\flatmap 三、问题总结1.代码问题2.配置问题 一、介绍 PySpark是Apa…...
降维(Dimensionality Reduction)
一、动机一:数据压缩 这节我将开始谈论第二种类型的无监督学习问题,称为降维。有几个原因使我们可能想要做降维,其一是数据压缩,它不仅允许我们压缩数据使用较少的计算机内存或磁盘空间,而且它可以加快我们的学习算法。…...
web应用(网页)怎样调用浏览器插件(如metamask小狐狸钱包)
下边是与gpt的对话,代码可以在浏览器控制台验证 一,在网页上点击一个连接按钮 然后小狐狸钱包就打开了,是怎么实现的呢 当你在网页上点击一个连接按钮,然后自动打开MetaMask(通常被称为“小狐狸钱包”,一种…...

2024美赛数学建模C题完整论文教学(含十几个处理后数据表格及python代码)
大家好呀,从发布赛题一直到现在,总算完成了数学建模美赛本次C题目Momentum in Tennis完整的成品论文。 本论文可以保证原创,保证高质量。绝不是随便引用一大堆模型和代码复制粘贴进来完全没有应用糊弄人的垃圾半成品论文。 C论文共49页&…...

Matplotlib绘制炫酷柱状图的艺术与技巧【第60篇—python:Matplotlib绘制柱状图】
文章目录 Matplotlib绘制炫酷柱状图的艺术与技巧1. 簇状柱状图2. 堆积柱状图3. 横向柱状图4. 百分比柱状图5. 3D柱状图6. 堆积横向柱状图7. 多系列百分比柱状图8. 3D堆积柱状图9. 带有误差线的柱状图10. 分组百分比柱状图11. 水平堆积柱状图12. 多面板柱状图13. 自定义颜色和样…...
window 挂载linux 网盘
背景:因为很多情况下,作为开发人员,我们都希望用Linux的编译环境,但是可以用windows下各种IDE来写code; linux 服务器安装NFS服务 说明:NFS 服务就是让不同的计算机可以在不同的操作系统之间共享文件,采用的就是服务端/客户端的架构,在NFS服务器上将目录设置为输出目录(…...

windows10忘记密码的解决方案
大家好,我是爱编程的喵喵。双985硕士毕业,现担任全栈工程师一职,热衷于将数据思维应用到工作与生活中。从事机器学习以及相关的前后端开发工作。曾在阿里云、科大讯飞、CCF等比赛获得多次Top名次。现为CSDN博客专家、人工智能领域优质创作者。喜欢通过博客创作的方式对所学的…...

进程和线程的区别详解
🎥 个人主页:Dikz12📕格言:那些在暗处执拗生长的花,终有一日会馥郁传香欢迎大家👍点赞✍评论⭐收藏 目录 进程 进程在系统中是如何管理的 进一步认识PCB 线程 能否一直增加线程数目来提高效率 进程和线程…...

(基于xml配置Aop)学习Spring的第十五天
一 . Spring Aop编程简介 再详细点 , 如下 二 . 基于xml配置Aop 解决proxy相关问题 解决问题开始用xml配置AOP 导入pom坐标 <dependency><groupId>org.aspectj</groupId><artifactId>aspectjweaver</artifactId><version>1.9.6</vers…...
Centos7环境安装PHP8
一、安装必要的模块 yum install -y bzip2-devel libcurl-devel libxml2-devel sqlite-devel oniguruma oniguruma-devel libxml2 libxml2-devel bzip2 bzip2-devel libcurl libcurl-devel libjpeg libjpeg-devel zstd libzstd-devel curl libcurl-devel libpng libpng-devel …...

No matching client found for package name ‘com.unity3d.player‘
2024年2月5日更新 必须使用Unity方式接入Unity项目!一句话解决所有问题。(真的别玩Android方式) 大致这问题出现原因是我在Unity采用了Android方式接入Firebase,而Android接入实际上和Unity接入方式有配置上的不一样,我…...

JavaWeb之HTML-CSS --黑马笔记
什么是HTML ? 标记语言:由标签构成的语言。 注意:HTML标签都是预定义好的,HTML代码直接在浏览器中运行,HTML标签由浏览器解析。 什么是CSS ? 开发工具 VS Code --安装文档和安装包都在网盘中 链接:https://p…...

logback日志配置
springboot默认使用logback 无需额外添加pom依赖 1.指定日志文件路径 当前项目路径 testlog文件夹下 linux会在项目jar包同级目录 <property name"log.path" value"./testlog" /> 如果是下面这样配置的话 window会保存在当前项目所在盘的home文件夹…...

SpringBoot集成Flowable工作流
文章目录 一、了解Flowable1. 什么是Flowable2. Flowable基本流程3. Flowable主要几张表介绍 二、SpringBoot集成Flowable1. 在idea中安装Flowable插件2. SpringBoot集成Flowable3. SpringBoot集成Flowable前端页面 三、创建流程模版(以请假为例) 提示:以下是本篇文…...
try-with-resources 语法详解
目录 一、介绍 二、用法对比 三、优势 四、原理分析 一、介绍 在Java 7中,引入了一项重要的语法糖——try-with-resources,这项特性的目的是为了更有效地处理资源的管理。资源指的是需要在代码执行完毕后手动关闭的对象,比如文件流、网络…...

【Java程序设计】【C00207】基于(JavaWeb+SSM)的宠物领养管理系统(论文+PPT)
基于(JavaWebSSM)的宠物领养管理系统(论文PPT) 项目简介项目获取开发环境项目技术运行截图 项目简介 这是一个基于ssm的宠物领养系统 本系统分为前台系统、管理员、收养者和寄养者4个功能模块。 前台系统:游客打开系统…...

2024-2-4-复习作业
源代码: #include <stdio.h> #include <stdlib.h> typedef int datatype; typedef struct Node {datatype data;struct Node *next;struct Node *prev; }*DoubleLinkList;DoubleLinkList create() {DoubleLinkList s(DoubleLinkList)malloc(sizeof(st…...

【Linux】解决:为什么重复创建同一个【进程pid会变化,而ppid父进程id不变?】
前言 大家好吖,欢迎来到 YY 滴Linux 系列 ,热烈欢迎! 本章主要内容面向接触过Linux的老铁 主要内容含: 欢迎订阅 YY滴C专栏!更多干货持续更新!以下是传送门! YY的《C》专栏YY的《C11》专栏YY的…...

【亿级数据专题】「高并发架构」盘点本年度探索对外服务的百万请求量的API网关设计实现
盘点本年度探索对外服务的百万请求量的API网关设计实现 背景介绍高性能API网关API网关架构优化多级缓存架构设计多级缓存富客户端漏斗模型数据读取架构 异步刷新过期缓存网关异步化调用模型高性能批量API调用(减少对于网关的交互和通信)并行调用和请求合…...

Python算法题集_环形链表
Python算法题集_环形链表 题234:环形链表1. 示例说明2. 题目解析- 题意分解- 优化思路- 测量工具 3. 代码展开1) 标准求解【集合检索】2) 改进版一【字典检测】3) 改进版二【双指针】 4. 最优算法 本文为Python算法题集之一的代码示例 题234:环形链表 …...

微信小程序 - 手机震动
一、界面 <button type"primary" bindtap"shortVibrate">短震动</button> <button type"primary" bindtap"longVibrate">长震动</button> 二、js逻辑代码 注:文档 https://developers.weixin.qq…...

srs linux
下载编译运行 git clone https:///ossrs/srs.git ./configure --h265on make 编译完成后即可启动SRS # 启动 ./objs/srs -c conf/srs.conf # 查看日志 tail -n 30 -f ./objs/srs.log 开放端口 默认RTMP接收推流端口是1935,SRS管理页面端口是8080,可…...

高等数学(下)题型笔记(八)空间解析几何与向量代数
目录 0 前言 1 向量的点乘 1.1 基本公式 1.2 例题 2 向量的叉乘 2.1 基础知识 2.2 例题 3 空间平面方程 3.1 基础知识 3.2 例题 4 空间直线方程 4.1 基础知识 4.2 例题 5 旋转曲面及其方程 5.1 基础知识 5.2 例题 6 空间曲面的法线与切平面 6.1 基础知识 6.2…...
linux 下常用变更-8
1、删除普通用户 查询用户初始UID和GIDls -l /home/ ###家目录中查看UID cat /etc/group ###此文件查看GID删除用户1.编辑文件 /etc/passwd 找到对应的行,YW343:x:0:0::/home/YW343:/bin/bash 2.将标红的位置修改为用户对应初始UID和GID: YW3…...

现代密码学 | 椭圆曲线密码学—附py代码
Elliptic Curve Cryptography 椭圆曲线密码学(ECC)是一种基于有限域上椭圆曲线数学特性的公钥加密技术。其核心原理涉及椭圆曲线的代数性质、离散对数问题以及有限域上的运算。 椭圆曲线密码学是多种数字签名算法的基础,例如椭圆曲线数字签…...

企业如何增强终端安全?
在数字化转型加速的今天,企业的业务运行越来越依赖于终端设备。从员工的笔记本电脑、智能手机,到工厂里的物联网设备、智能传感器,这些终端构成了企业与外部世界连接的 “神经末梢”。然而,随着远程办公的常态化和设备接入的爆炸式…...

让回归模型不再被异常值“带跑偏“,MSE和Cauchy损失函数在噪声数据环境下的实战对比
在机器学习的回归分析中,损失函数的选择对模型性能具有决定性影响。均方误差(MSE)作为经典的损失函数,在处理干净数据时表现优异,但在面对包含异常值的噪声数据时,其对大误差的二次惩罚机制往往导致模型参数…...

Yolov8 目标检测蒸馏学习记录
yolov8系列模型蒸馏基本流程,代码下载:这里本人提交了一个demo:djdll/Yolov8_Distillation: Yolov8轻量化_蒸馏代码实现 在轻量化模型设计中,**知识蒸馏(Knowledge Distillation)**被广泛应用,作为提升模型…...

GruntJS-前端自动化任务运行器从入门到实战
Grunt 完全指南:从入门到实战 一、Grunt 是什么? Grunt是一个基于 Node.js 的前端自动化任务运行器,主要用于自动化执行项目开发中重复性高的任务,例如文件压缩、代码编译、语法检查、单元测试、文件合并等。通过配置简洁的任务…...

解析奥地利 XARION激光超声检测系统:无膜光学麦克风 + 无耦合剂的技术协同优势及多元应用
在工业制造领域,无损检测(NDT)的精度与效率直接影响产品质量与生产安全。奥地利 XARION开发的激光超声精密检测系统,以非接触式光学麦克风技术为核心,打破传统检测瓶颈,为半导体、航空航天、汽车制造等行业提供了高灵敏…...