Pyspark中的ROW对象使用

devtools/2024/9/20 1:31:25/ 标签: 开发语言, python, spark, pyspark

文章目录

  • Pyspark中的Row对象使用
    • Row对象介绍
    • Row对象创建
    • 使用Row对象创建DataFrame
    • DataFrame转换为row对象
    • Row对象包含的方法
      • asDict()
      • count()
      • index()

sparkRow_1">Pyspark中的Row对象使用

Row对象介绍

在PySpark中,Row对象是DataFrame的基本组成单元,它封装了DataFrame中的每一行数据。每行数据以Row对象的形式存在,其中包含了该行的各个字段值。这些字段值可以像属性一样被访问,使得处理数据变得更加直观和方便。Row对象的创建和使用,使得PySpark能够以更加结构化的方式处理数据,提高了数据处理效率和便利性。

Row对象创建

python">from pyspark import SparkSession,Row
from pyspark import SparkContext,SparkConfconf = SparkConf()
conf.setAppName('ldsx_create_rdd')
conf.setMaster('local[*]')# 初始化对象
spark = SparkSession.builder.config(conf=conf).getOrCreate()#创建Row对象
fields = ["name", "age", "height"]
schema = Row(*fields)
data1 = schema('ldsx',18,183)
#print内容
Row(name='ldsx', age=18, height=183)#可以直接通过属性访问
data1.name
# 可以通过索引访问
data1[0]

使用Row对象创建DataFrame

Row对象是DataFrame的基本组成单元

python"># 创建包含row对象的列表
row_list = [schema(1,2,3),schema(2,3,4),schema('ldsx',3,4)]
# 打印信息
>>[Row(name=1, age=2, height=3), Row(name=2, age=3, height=4), Row(name='ldsx', age=3, height=4)]
# 使用row对象创建dataframe
df_1 = spark.createDataFrame(row_list)
df_1.show()
'''
+----+---+------+
|name|age|height|
+----+---+------+
|   1|  2|     3|
|   2|  3|     4|
|ldsx|  3|     4|
+----+---+------+
'''

DataFrame转换为row对象

python"># 拉去数据到dirver端,在生产中慎用collect
df_1.rdd.collect()
>>[Row(name='Alice', age=25, score=None), Row(name='Bob', age=None, score=30), Row(name='John', age=35, score=40)]
# 可以在map中进行处理 lambda 可以换成专门处理方法,这个传入lambda的x就是row对象
df.rdd.map(lambda x:print(x)).count() #count作用触发map

Row对象包含的方法

asDict()

转换成字典

python">from pyspark import SparkSession,Row
from pyspark import SparkContext,SparkConf
#创建Row对象
data2 = Row(name='ldsx2', age=18, height=183)#row对象转换dict结构
data1.asDict()
#输出内容
>>{'name': 'ldsx2', 'age': 18, 'height': 183}#row对象中包含row对象 使用True参数内部也会转换
Row(ldsx=1, val=Row(name='a', age=2)).asDict()
>>{'ldsx': 1, 'val': Row(name='a', age=2)}
Row(ldsx=1, val=Row(name='a', age=2)).asDict(True) #True内部也转换
>>{'ldsx': 1, 'val': {'name': 'a', 'age': 2}}

count()

统计值出现的次数

python"># count只能统计外层值 这种值为Row对象的里面如果值存在1 也不会统计
Row(ldsx=1, val=Row(name='a', age=1),ldsx3=1).count(1) 
#返回值为1的个数
>>2

index()

index(value[, start, stop])

类似python list中index方法
value:要查询的值
start :查找的起始位置 可选
stop:查找的结束位置 可选

python">#row对象里面值row对象不查询
Row(ldsx=1, val=Row(ldsx=1, age=1),ldsx3=1,ldsx4=1).index(1,1,5)
#返回搜索索引范围1~5中值为1的索引编号
>>2# 查找不存在的元素报错,通过报错也可知index方法是吧row对象当成了一个tuple进行查询的
'''
Row(ldsx=1, val=Row(ldsx=1, age=1),ldsx3=1,ldsx4=1).index(9,1,5)
Traceback (most recent call last):File "/home/ldsx/down_load/pycharm_data/pycharm-community-2024.2/plugins/python-ce/helpers/pydev/_pydevd_bundle/pydevd_exec2.py", line 3, in Execexec(exp, global_vars, local_vars)File "<input>", line 1, in <module>
ValueError: tuple.index(x): x not in tuple
'''
#所以我们肯定也可以使用索引位置进行row对象内的元素访问如
data1 = Row(ldsx=1, val=Row(ldsx=1, age=1),ldsx3=1,ldsx4=1)
data1[0]
#返回
>>1

http://www.ppmy.cn/devtools/108145.html

相关文章

机器学习-基本方式

文章目录 一、有监督学习&#xff08;Supervised Learning&#xff09;1.定义2.特点3.应用场景4.常见算法&#xff1a; 二、无监督学习&#xff08;Unsupervised Learning&#xff09;1.定义 2.特点3.应用场景4.常见算法 三、有监督学习与无监督学习的区别 有监督学习和无监督学…

父类是给java项目SpringCloud微服务 中SpringBoot解决继承父类后 maven标红

解决继承父类后 maven标红 问题: Project: org.example:SpringCloud_wfw:1.0-SNAPSHOTLocation:: X:/SpringCloud_微服务/pom.xml Problems:packaging with value jar is invalid. Aggregator projects require pom a 父类中packaging改成pom Maven父类中packaging改成pom &…

如何完整删除rancher中已接入的rancher集群并重新导入

前提&#xff1a;如果手动删除kubectl delete all --all --namespace<namespace>删除不了的情况下可以使用此方案 一&#xff1a;查找rancher接入集群的所有namespace 接入rancher的k8s集群namespace都是以cattle命名的 rootA800-gpu-node01:~# kubectl get namespaces |…

Android Launcher3

一、定义与功能 Android Launcher是Android操作系统中的一个重要组件&#xff0c;它负责管理和呈现用户界面&#xff0c;包括桌面、应用程序抽屉和部件。Launcher不仅为用户提供了一个启动应用程序的入口&#xff0c;还允许用户自定义手机的主屏幕、图标、小部件布局以及一些基…

通过组合Self-XSS + CSRF得到存储型XSS

在一次漏洞赏金挖掘中&#xff0c;我在更改用户名的功能点出发现了一个XSS&#xff0c;在修改用户名的地方添加了一个简单的XSS payload并且刷新页面&#xff1a; 用户设置面板 XSS证明 但是问题是这个功能配置并不是公共的&#xff0c;造成XSS漏洞的唯一方法是告诉受害者将其…

【C++】list的使用与简单模拟实现

目录 1、list的介绍和使用&#xff1a; 1、结构&#xff1a; 2、接口函数&#xff1a; 迭代器遍历&#xff1a; 增删查改&#xff1a; 翻转与排序&#xff1a; 2、list的模拟实现&#xff1a; 1、节点的封装&#xff1a; 2、迭代器的封装&#xff1a; 3、list的模拟实…

k8s中emptyDir{}临时卷的作用原理

用途&#xff1a;在k8s中&#xff0c;一个pod内有一个主容器&#xff0c;这个主容器里面的进程是跑一个服务的&#xff0c;这个服务有一个操作&#xff0c;就是把一些数据&#xff08;比如日志信息&#xff09;&#xff0c;写到主容器内的一个文件里面。这个文件里面的内容&…

一个比 Nginx 还简单的 Web 服务器

企业级的 Web 服务器非常多&#xff0c;Nginx、Tomcat、Apache、IIS、FastAPI、Flask 等。今天松哥再给大家介绍一个开源的 Web 服务器&#xff0c;这款服务器具备自动 HTTPS 功能和高度可配置性&#xff0c;它的名字是&#xff1a;Caddy。 Caddy 是一个 Go 编写的 Web 服务器…

从应用内跳转至外部浏览器 - 鸿蒙 HarmonyOS Next

从应用内跳转至外部浏览器,基于 Want 来实现,同时也可以通过其方式尝试跳转至其它系统模块,具体可参考如下 code : 方法调用 // 调用 pushOutsideWeb(controller, url) 方法实现 import { common, contextConstant, Want } from kit.AbilityKit; import { HintMessage } fr…

前端技术(六)—— AJAX详解

一、原生 AJAX 1. AJAX 简介 AJAX 全称为 Asynchronous JavaScript And XML&#xff0c;就是异步的 JS 和 XML。 通过 AJAX 可以在浏览器中向服务器发送异步请求&#xff0c;最大的优势&#xff1a;无刷新获取数据。 AJAX 不是新的编程语言&#xff0c;而是一种将现有的标准组…

43. 1 ~ n 整数中 1 出现的次数【难】

comments: true difficulty: 中等 edit_url: https://github.com/doocs/leetcode/edit/main/lcof/%E9%9D%A2%E8%AF%95%E9%A2%9843.%201%EF%BD%9En%E6%95%B4%E6%95%B0%E4%B8%AD1%E5%87%BA%E7%8E%B0%E7%9A%84%E6%AC%A1%E6%95%B0/README.md 面试题 43. 1 &#xff5e; n 整数中 1 …

滑动窗口——632. 最小区间

最近在抽时间写LC上的一个专栏——2024春招冲刺百题计划。挑着做&#xff0c;做了几道和滑动窗口相关的题目&#xff0c;632. 最小区间&#xff0c;LC上标记为困难&#xff0c;第一次写完全没有思考&#xff0c;参考了别人写的答案茅塞顿开&#xff0c;特此记录以鞭策自己学习。…

SQL性能治理经验谈

背景 SQL数据类型 数值 这些类型包括严格数值数据类型(INTEGER、SMALLINT、DECIMAL 和 NUMERIC)&#xff0c;以及近似数值数据类型(FLOAT、REAL 和 DOUBLE PRECISION)。 类型大小范围&#xff08;有符号&#xff09;范围&#xff08;无符号&#xff09;用途TINYINT1 Bytes(-128…

数业智能心大陆:揭秘如何利用AI做心理疗愈

在心理健康领域&#xff0c;心理咨询师扮演着至关重要的角色&#xff0c;他们通过提供支持、共情和鼓励&#xff0c;帮助来访者表达情感、释放压力并进行自我探索&#xff0c;以解决各种心理问题。而今&#xff0c;随着AI技术的飞速发展&#xff0c;数业智能心大陆等专注AI心灵…

AI聊天应用不能上架?Google play对AI类型应用的规则要求是什么?

随着生成式AI模型的广泛应用&#xff0c;很多开发者都有在开发AI应用或将其整合到应用中。我们知道&#xff0c;谷歌是非常注重应用生态的&#xff0c;去年开始就推出了一些针对生成式AI应用的政策&#xff0c;对AI应用的内容质量和合规性问题提出了一些要求。 几天前&#xff…

《绿色生活:迈向可持续发展的每一步》

绿色生活&#xff1a;迈向可持续发展的每一步 随着全球气候变化问题日益严峻&#xff0c;越来越多的人开始意识到采取行动保护环境的重要性。可持续发展不再只是一个口号&#xff0c;而是每个人都应该践行的生活方式。本文将探讨如何在日常生活中实现绿色生活&#xff0c;以及…

使用 Nacos 来管理微服务

Nacos 是阿里巴巴开源的一个易于构建云原生应用的动态服务发现、配置管理和服务管理平台。它旨在帮助开发者更轻松地构建、部署微服务架构&#xff0c;并且支持动态配置服务、服务发现以及服务间的健康检查等功能。 Nacos 的主要功能包括&#xff1a; 服务发现与健康检查&#…

Redis从入门再再到入门(下)

文章目录 1.Redis远程连接1.1 Redis远程连接配置1.2 通过桌面版图形化界面连接Redis1.3 通过IDEA中的插件连接Redis 2.Jedis的基本使用2.1 jedis概述2.2 jedis的基本操作2.3 jedis连接池 3.Spring整合Redis3.1 新建maven工程,引入相关依赖3.2 redis.properties3.3 spring-redis…

代码随想录 -- 二叉树 -- 二叉树的最小深度

111. 二叉树的最小深度 - 力扣&#xff08;LeetCode&#xff09; 思路&#xff1a;递归调用 递归返回值&#xff1a;返回以当前节点为根节点的二叉树的最小深度 递归出口&#xff1a;当根节点为空时&#xff0c;返回 0 单层递归逻辑&#xff1a;特殊情况处理&#xff1a;当…

六个方面探讨企业为何迫切需要替换FTP

随着信息技术的迅猛发展和网络安全形势的日趋严峻&#xff0c;传统的FTP文件传输协议因其固有的局限性和安全隐患&#xff0c;逐渐难以满足现代企业的需求。因此&#xff0c;寻找并升级FTP替代方案成为众多企业需要解决的问题。本文将从六个方面探讨企业为何迫切需要替换FTP。 …