首页 > 其他分享 >Pyspark中的ROW对象使用

Pyspark中的ROW对象使用

时间:2024-08-30 21:23:59浏览次数:6  
标签:row ldsx Pyspark 对象 age name ROW Row

文章目录

Pyspark中的Row对象使用

Row对象介绍

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

Row对象创建

from pyspark import SparkSession,Row
from pyspark import SparkContext,SparkConf

conf = 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的基本组成单元

# 创建包含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对象

# 拉去数据到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()

转换成字典

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()

统计值出现的次数

# 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:查找的结束位置 可选

#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 Exec
    exec(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

标签:row,ldsx,Pyspark,对象,age,name,ROW,Row
From: https://blog.csdn.net/weixin_43322583/article/details/141721735

相关文章

  • C#之中SqlConnection的Close和Dispose的区别和在使用using语句管理SqlConnection对象
    SqlConnection的Close和Dispose的区别在C#中,SqlConnection对象的Close和Dispose方法都可以用来释放数据库连接资源,但它们的作用和使用场景有所不同。Close方法SqlConnection.Close方法用于关闭与数据库的连接。当你调用这个方法时,它会关闭连接,但不会释放与连接关联的所有......
  • SAP B1 无对象表或者没有含自动增量的对象,如何通过SBO_SP_TransactionNotification控
       SAPB1中无对象或者没有含自动增量的对象表,在SBO_SP_TransactionNotification中object_type规则:-3+Tab键+@表名例如:创建无对象表IPS_OITM,则object_type值为:[-3@IPS_OITM]特别注意:如果用的是没有含自动增量的对象表,必须要在Name字段中输入值才会触发SBO控制的存储过程......
  • 对象切割 和 虚函数
    对象切割简介:当你将一个派生类对象赋值给一个基类对象时,只会保留基类部分的信息,派生类的特有信息会被丢弃。这就是所谓的对象切割(slicing)发生时刻:将派生类对象赋值给父类对象时,如下classFather{};classSon:publicFather{};Sons;Fatherf=s; //发生......
  • C#中通用返回对象Result<T>(定义及使用)
     1.定义返回对象//Result对象是一种显式表示成功结果或失败的类型//方法可以返回这个类,而不是引发异常。如果操作失败,则Result对象将包含错误消息或代码,但不包含异常publicclassResult<T>{publicTValue{get;}publicstringEr......
  • C# 面向对象的7大原则之开闭原则(Open-Closed Principle,OCP)
    定义开闭原则(OCP):软件实体应对扩展开放,对修改关闭。通俗来讲就是,当需要进行扩展时,在不更改现有代码的前提之下,进行扩展。举例假设有一个动物发出声音的类为Animal,最初只有Dog(狗)和Cat(猫),后续需要新增Cow(牛);按照开闭原则,不应修改Animal类、Dog类或Cat类,而是创建新的Cow类,并在适......
  • C# 面向对象的7大原则之单一职责原则(Single Responsibility Principle,SRP)
    定义单一职责原则(SRP):一个类只能有一个引起它变换的原因。通俗来讲就是一个类只负责一个职责,若负责的职责太多,可能会由于其中一个职责的变化而影响其他职责。举例假设有一个Student,它既负责了学生的基本信息,又负责了学生平均成绩的计算,这就违反了单一职责原则。public......
  • Winobj 是一个由微软提供的工具,用于查看和浏览 Windows 操作系统中的对象命名空间。它
    Winobj是一个由微软提供的工具,用于查看和浏览Windows操作系统中的对象命名空间。它允许你查看系统中的各种对象,如文件系统对象、注册表键、符号链接等,帮助深入了解系统的内部结构。Winobj是由微软开发的一个工具,起源于微软的内部开发和调试需求。它最初是为了帮助开发人员和......
  • 02.类、对象、成员函数的介绍
    2.类、对象、成员函数的介绍2.1类的基本概念在上一节中,讨论了类,对象,数据成员(属性),成员函数(行为)。有日期对象、时间对象、音频对象、视频对象、汽车对象、人对象等。几乎任何名词都可以在属性(如名称、颜色和大小)和行为(如计算、移动和通信)方面合理地表示为软件对象。可以将......
  • 访问者模式:如何实现对象级别的矩阵结构?
    今天我们先来看一个原理看似很简单,但是理解起来有一定难度,使用场景相对较少的行为型模式:访问者模式。一、模式原理分析访问者模式的原始定义是:允许在运行时将一个或多个操作应用于一组对象,将操作与对象结构分离。这个定义会比较抽象,但是我们依然能看出两个关键点:一个是运行时使......
  • day03-面向对象-内部类&泛型&常用API
    一、内部类内部类是类中的五大成分之一(成员变量、方法、构造器、代码块、内部类)如果一个类定义在另一个类的内部,这个类就是内部类。场景:当一个类的内部,包含了一个完整的事物,且这个事物没有必要单独设计时,就可以把这个事物设计成内部类内部类分为四种:成员内部类[了解]......