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 转换:

  1. 使用 sc.parallelize() 方法创建了一个整数类型的 RDD,其中包含数字1到9。
  2. 对 RDD 进行 map 转换,将每个元素乘以10。
  3. 使用 print 函数输出 map 后的结果。
  4. 使用 sc.parallelize() 方法创建了一个字符串类型的 RDD,其中包含三个字符串。
  5. 对 RDD 进行 map 转换,将每个字符串按照 “.” 分隔成多个子字符串。
  6. 使用 print 函数输出 map 后的结果。
  7. 对 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。重启解决~~~~(真是意想不到!!!!)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/662332.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Linux离线安装Telnet

前言&#xff1a;由于服务器部署在内网环境&#xff0c;不能yum安装 1.先从网站下载好我们所需要到的三个rpm包http://www.rpmfind.net/linux/rpm2html/search.php?queryxinetd&submitSearch...&system&arch image.png 三个依赖包分别是&#xff1a; -rw-r--r-- 1…

Invicti Professional v24.1.0.43434

新的安全检查 添加了对 dotCMS 的检查添加了对 Ultimate Member WordPress 插件的检查添加了新的 mXSS 模式添加了新签名来检测 JWK 改进 改进了针对 Weak Ciphers Enabled 漏洞的建议改进了对 swagger.json 漏洞的检测添加了对 AWS WAFv2 规则的支持改进了更多错误和警告消…

探索Gin框架:Golang使用Gin完成文件上传

前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到网站https://www.captainbed.cn/kitie。 前言 在之前的文章中&#xff0c;我们讲解了Gin框架的快速入门使用&#xff0c;今天我们来聊聊如何使用…

element-ui button 仿写 demo

基于上篇 button 源码分享写了一个简单 demo&#xff0c;在写 demo 的过程中&#xff0c;又发现了一个小细节&#xff0c;分享一下&#xff1a; 1、组件部分&#xff1a; <template><buttonclass"yss-button"click"handleClick":class"[ty…

STM32目录结构

之前一直头疼的32目录&#xff0c;比51复杂&#xff0c;又没有C规律&#xff0c;也不像python脚本文件关联不强&#xff0c;也不像工整的FPGA工程&#xff0c;编的时候到处放&#xff0c;爆出的错千奇百怪。短暂整理了一个&#xff0c;还是没有理得很轻。 startup_stm32f10x_m…

基于python+django,我开发了一款药店信息管理系统

功能介绍 平台采用B/S结构&#xff0c;后端采用主流的Python语言进行开发&#xff0c;前端采用主流的Vue.js进行开发。 功能包括&#xff1a;药品管理、分类管理、顾客管理、用户管理、日志管理、系统信息模块。 代码结构 server目录是后端代码web目录是前端代码 部署运行…

基于SpringBoot+Redis的前后端分离外卖项目-苍穹外卖(十六)

商家端订单管理模块 1. 订单搜索1.1 需求分析和设计1.2 代码实现1.2.1 admin/OrderController1.2.2 OrderService1.2.3 OrderServiceImpl 2. 各个状态的订单数量统计2.1 需求分析和设计2.2 代码实现2.2.1 admin/OrderController2.2.2 OrderService2.2.3 OrderServiceImpl2.2.4 …

浅谈UI自动化测试

为了让对自动化技术感兴趣的朋友们有真实案例的支持&#xff0c;今天我们给大家带来一期适合新手的UI自动化测试介绍。我们的目标是让大家能够轻松理解UI自动化测试的概念&#xff0c;并且能够亲自动手去实践。通过这个介绍&#xff0c;大家能够对UI自动化测试有一个整体的理解…

【Linux C | I/O模型】Unix / Linux系统的5种IO模型 | 图文详解

&#x1f601;博客主页&#x1f601;&#xff1a;&#x1f680;https://blog.csdn.net/wkd_007&#x1f680; &#x1f911;博客内容&#x1f911;&#xff1a;&#x1f36d;嵌入式开发、Linux、C语言、C、数据结构、音视频&#x1f36d; &#x1f923;本文内容&#x1f923;&a…

2016年苏州大学837复试机试C/C++

2016年苏州大学复试机试 第一题 题目 公鸡5元一只&#xff0c;母鸡3元一只&#xff0c;幼鸡1元3只。若100元钱买了100只鸡&#xff0c;问其中公鸡、母鸡、幼鸡各多少只&#xff1f; 博主注&#xff1a;此题经典百元买百鸡问题&#xff0c;出自&#xff1a;公元5世纪末&#…

模拟钉钉官网动画

实现思路&#xff1a;利用粘性定位sticky&#xff0c;以及滚动事件实现。首先我们应该设置滚动动画开始位置和结束位置 &#xff0c;然后根据位置计算透明度或者transform&#xff0c;scale的值。 首先根据上述图线计算属性值&#xff0c;代码如下&#xff1a; function creat…

PHP漏洞查询

CVE - Search CVE List (mitre.org) 美国国家漏洞数据库&#xff08;需要梯子&#xff09; NATIONAL VULNERABILITY DATABASE NVD - Search and Statistics (nist.gov) 基本都能查询到&#xff0c;传结果详情页里面会有一些解决方案的连接 PHP的官方网站 PHP :: Bugs :: Se…

C语言探索:水仙花数的奥秘与计算

摘要&#xff1a; 水仙花数&#xff0c;一种特殊的三位数&#xff0c;其各位数字的立方和等于该数本身。本文将详细介绍水仙花数的定义、性质&#xff0c;以及如何使用C语言来寻找100至999范围内的水仙花数。 目录 一、水仙花数的定义与性质 二、用C语言寻找100至999范围内的…

Camunda 流程引擎API介绍

&#x1f496;专栏简介 ✔️本专栏将从Camunda(卡蒙达) 7中的关键概念到实现中国式工作流相关功能。 ✔️文章中只包含演示核心代码及测试数据&#xff0c;完整代码可查看作者的开源项目snail-camunda ✔️请给snail-camunda 点颗星吧&#x1f618; &#x1f496;Services …

病历管理系统

技术架构&#xff1a; StrutsSpringHibernate 有需要该项目的小伙伴可以私信我你的Q。 功能描述&#xff1a; 企业财务管理系统主要用于电子病历来提高医院各项工作的效率和质量&#xff0c;促进医学科研、教学&#xff1b;减轻各类事务性工作的劳动强度&#xff0c;使他们…

LCR 193. 二叉搜索树的最近公共祖先

解题思路&#xff1a; 小的在左子树&#xff0c;大的在右子树。 class Solution {public TreeNode lowestCommonAncestor(TreeNode root, TreeNode p, TreeNode q) {if(root.val<p.val&&root.val<q.val)return lowestCommonAncestor(root.right,p,q);if(root.va…

深度揭秘:代理IP的工作原理及其在网络安全中的关键角色

代理IP的工作原理及其在网络安全中的关键角色是一个相对复杂但非常重要的主题。以下是对这一内容的深度揭秘&#xff1a; 代理IP的工作原理 1. 请求转发 当一个客户端&#xff08;如浏览器或爬虫程序&#xff09;使用代理IP时&#xff0c;它不是直接与目标网站通信&#xff0c…

2024美国大学生数学建模E题财产保险的可持续模型详解思路+具体代码

2024美国大学生数学建模E题财产保险的可持续模型详解思路具体代码 前言 很快啊&#xff01;啪的一下拿到题目就开始做题&#xff01;简单介绍一下我自己&#xff1a;博主专注建模五年&#xff0c;参与过大大小小数十来次数学建模&#xff0c;理解各类模型原理以及每种模型的建…

Linux网络编程 基础

OSI七层模型 物理层&#xff1a;主要定义物理设备标准&#xff0c;如网线的接口类型、光纤的接口类型、各种传输介质的传输速率等。它的主要作用是传输比特流&#xff08;就是由1、0转化为电流强弱来进行传输&#xff0c;到达目的地后再转化为1、0&#xff0c;也就是我们常说的…

微信公众号公函公证书怎么弄?

公众号迁移有什么作用&#xff1f;只能变更主体吗&#xff1f;公众号迁移的作用可不止是变更主体哦&#xff01;有时候我们可能需要更换账号主体&#xff0c;但公众号是不支持直接变更的。这时候&#xff0c;我们就可以通过账号迁移功能&#xff0c;把 A 公众号的粉丝、违规记录…