首页 > 编程语言 >【Python】PySpark 数据计算 ④ ( RDD#filter 方法 - 过滤 RDD 中的元素 | RDD#distinct 方法 - 对 RDD 中的元素去重 )

【Python】PySpark 数据计算 ④ ( RDD#filter 方法 - 过滤 RDD 中的元素 | RDD#distinct 方法 - 对 RDD 中的元素去重 )

时间:2023-08-07 12:37:18浏览次数:34  
标签:pyspark PySpark 元素 filter RDD rdd distinct



文章目录

  • 一、RDD#filter 方法
  • 1、RDD#filter 方法简介
  • 2、RDD#filter 函数语法
  • 3、代码示例 - RDD#filter 方法示例
  • 二、RDD#distinct 方法
  • 1、RDD#distinct 方法简介
  • 2、代码示例 - RDD#distinct 方法示例







一、RDD#filter 方法




1、RDD#filter 方法简介



RDD#filter 方法 可以 根据 指定的条件 过滤 RDD 对象中的元素 , 并返回一个新的 RDD 对象 ;

RDD#filter 方法 不会修改原 RDD 数据 ;

使用方法 :

new_rdd = old_rdd.filter(func)

上述代码中 ,

  • old_rdd 是 原始的 RDD 对象 ,
  • 调用 filter 方法 , 传入的 func 参数是一个 函数 或者 lambda 匿名函数 , 用于定义过滤条件 ,
  • func 函数返回 True , 则保留元素 ;
  • func 函数返回 False , 则删除元素 ;
  • new_rdd 是过滤后的 RDD 对象 ;


2、RDD#filter 函数语法



RDD#filter 方法 语法 :

rdd.filter(func)

上述 方法 接受一个 函数 作为参数 , 该 函数参数 定义了要过滤的条件 ; 符合条件的 元素 保留 , 不符合条件的删除 ;

下面介绍 filter 函数中的 func 函数类型参数的类型 要求 ;



func 函数 类型说明 :

(T) -> bool

传入 filter 方法中的 func 函数参数 , 其函数类型 是 接受一个 任意类型 元素作为参数 ,该布尔值的作用是表示该元素是否应该保留在新的 RDD 中 ;

  • 返回 True 保留元素 ;
  • 返回 False 删除元素 ;



3、代码示例 - RDD#filter 方法示例



下面代码中的核心代码是 :

# 创建一个包含整数的 RDD
rdd = sc.parallelize([1, 2, 3, 4, 5, 6, 7, 8, 9])

# 使用 filter 方法过滤出偶数, 删除奇数
even_numbers = rdd.filter(lambda x: x % 2 == 0)

# 输出过滤后的结果
print(even_numbers.collect())

上述代码中 , 原始代码是 1 到 9 之间的整数 ;

传入 lambda 匿名函数 , lambda x: x % 2 == 0 , 传入数字 ,

  • 如果是偶数返回 True , 保留元素 ;
  • 如果是 奇数 返回 False , 删除元素 ;


代码示例 :

"""
PySpark 数据处理
"""

# 导入 PySpark 相关包
from pyspark import SparkConf, SparkContext
# 为 PySpark 配置 Python 解释器
import os
os.environ['PYSPARK_PYTHON'] = "Y:/002_WorkSpace/PycharmProjects/pythonProject/venv/Scripts/python.exe"

# 创建 SparkConf 实例对象 , 该对象用于配置 Spark 任务
# setMaster("local[*]") 表示在单机模式下 本机运行
# setAppName("hello_spark") 是给 Spark 程序起一个名字
sparkConf = SparkConf() \
    .setMaster("local[*]") \
    .setAppName("hello_spark")

# 创建 PySpark 执行环境 入口对象
sc = SparkContext(conf=sparkConf)

# 打印 PySpark 版本号
print("PySpark 版本号 : ", sc.version)

# 创建一个包含整数的 RDD
rdd = sc.parallelize([1, 2, 3, 4, 5, 6, 7, 8, 9])

# 使用 filter 方法过滤出偶数, 删除奇数
even_numbers = rdd.filter(lambda x: x % 2 == 0)

# 输出过滤后的结果
print(even_numbers.collect())

# 停止 PySpark 程序
sc.stop()

执行结果 :

Y:\002_WorkSpace\PycharmProjects\pythonProject\venv\Scripts\python.exe Y:/002_WorkSpace/PycharmProjects/HelloPython/hello.py
23/08/02 21:07:55 WARN Shell: Did not find winutils.exe: java.io.FileNotFoundException: java.io.FileNotFoundException: HADOOP_HOME and hadoop.home.dir are unset. -see https://wiki.apache.org/hadoop/WindowsProblems
Setting default log level to "WARN".
To adjust logging level use sc.setLogLevel(newLevel). For SparkR, use setLogLevel(newLevel).
23/08/02 21:07:55 WARN NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
PySpark 版本号 :  3.4.1
[2, 4, 6, 8]

Process finished with exit code 0

【Python】PySpark 数据计算 ④ ( RDD#filter 方法 - 过滤 RDD 中的元素 | RDD#distinct 方法 - 对 RDD 中的元素去重 )_数据处理






二、RDD#distinct 方法




1、RDD#distinct 方法简介



RDD#distinct 方法 用于 对 RDD 中的数据进行去重操作 , 并返回一个新的 RDD 对象 ;

RDD#distinct 方法 不会修改原来的 RDD 对象 ;



使用时 , 直接调用 RDD 对象的 distinct 方法 , 不需要传入任何参数 ;

new_rdd = old_rdd.distinct()

上述代码中 , old_rdd 是原始 RDD 对象 , new_rdd 是元素去重后的新的 RDD 对象 ;



2、代码示例 - RDD#distinct 方法示例



代码示例 :

"""
PySpark 数据处理
"""

# 导入 PySpark 相关包
from pyspark import SparkConf, SparkContext
# 为 PySpark 配置 Python 解释器
import os
os.environ['PYSPARK_PYTHON'] = "Y:/002_WorkSpace/PycharmProjects/pythonProject/venv/Scripts/python.exe"

# 创建 SparkConf 实例对象 , 该对象用于配置 Spark 任务
# setMaster("local[*]") 表示在单机模式下 本机运行
# setAppName("hello_spark") 是给 Spark 程序起一个名字
sparkConf = SparkConf() \
    .setMaster("local[*]") \
    .setAppName("hello_spark")

# 创建 PySpark 执行环境 入口对象
sc = SparkContext(conf=sparkConf)

# 打印 PySpark 版本号
print("PySpark 版本号 : ", sc.version)

# 创建一个包含整数的 RDD 对象
rdd = sc.parallelize([1, 1, 2, 2, 3, 3, 3, 4, 4, 5])

# 使用 distinct 方法去除 RDD 对象中的重复元素
distinct_numbers = rdd.distinct()

# 输出去重后的结果
print(distinct_numbers.collect())

# 停止 PySpark 程序
sc.stop()

执行结果 :

Y:\002_WorkSpace\PycharmProjects\pythonProject\venv\Scripts\python.exe Y:/002_WorkSpace/PycharmProjects/HelloPython/hello.py
23/08/02 21:16:35 WARN Shell: Did not find winutils.exe: java.io.FileNotFoundException: java.io.FileNotFoundException: HADOOP_HOME and hadoop.home.dir are unset. -see https://wiki.apache.org/hadoop/WindowsProblems
Setting default log level to "WARN".
To adjust logging level use sc.setLogLevel(newLevel). For SparkR, use setLogLevel(newLevel).
23/08/02 21:16:35 WARN NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
PySpark 版本号 :  3.4.1
Y:\002_WorkSpace\PycharmProjects\pythonProject\venv\Lib\site-packages\pyspark\python\lib\pyspark.zip\pyspark\shuffle.py:65: UserWarning: Please install psutil to have better support with spilling
Y:\002_WorkSpace\PycharmProjects\pythonProject\venv\Lib\site-packages\pyspark\python\lib\pyspark.zip\pyspark\shuffle.py:65: UserWarning: Please install psutil to have better support with spilling
Y:\002_WorkSpace\PycharmProjects\pythonProject\venv\Lib\site-packages\pyspark\python\lib\pyspark.zip\pyspark\shuffle.py:65: UserWarning: Please install psutil to have better support with spilling
Y:\002_WorkSpace\PycharmProjects\pythonProject\venv\Lib\site-packages\pyspark\python\lib\pyspark.zip\pyspark\shuffle.py:65: UserWarning: Please install psutil to have better support with spilling
Y:\002_WorkSpace\PycharmProjects\pythonProject\venv\Lib\site-packages\pyspark\python\lib\pyspark.zip\pyspark\shuffle.py:65: UserWarning: Please install psutil to have better support with spilling
[1, 2, 3, 4, 5]

Process finished with exit code 0

【Python】PySpark 数据计算 ④ ( RDD#filter 方法 - 过滤 RDD 中的元素 | RDD#distinct 方法 - 对 RDD 中的元素去重 )_Spark_02


标签:pyspark,PySpark,元素,filter,RDD,rdd,distinct
From: https://blog.51cto.com/u_14202100/6992426

相关文章

  • 【错误记录】PySpark 运行报错 ( Did not find winutils.exe | HADOOP_HOME and hadoo
    文章目录一、报错信息二、解决方案(安装Hadoop运行环境)一、报错信息核心报错信息:WARNShell:Didnotfindwinutils.exe:java.io.FileNotFoundException:java.io.FileNotFoundException:HADOOP_HOMEandhadoop.home.dirareunset.在PyCharm中,调用PySpark执......
  • java 异常 java.util.ConcurrentModificationException java 删除集合中满足条件的元
    java异常java.util.ConcurrentModificationExceptionjava.util.ConcurrentModificationException是Java中的一个常见异常,通常在使用迭代器或并发操作时发生。当集合在迭代过程中被修改时,就可能会抛出这个异常。这个异常是为了帮助开发人员发现并发访问集合时的潜在问题。在迭代期......
  • selenium 无法定位元素的一种情形 - iframe
    今天在爬取一个反爬措施较严格的网站时,使用selenium做自动化登录时,无法定位输入框的问题。查看网页源代码确实没有登录相关元素的标签,可以判定是采用的动态加载,但是即使使用的动态加载,等待页面渲染完毕之后应该还是能定位的。看了下渲染完毕之后的网页源码,发现了在当前html......
  • 自动化工具之Appium元素操作小技巧
    背景   appium自动化工作中,元素操作最常用的就是Id/xpath,因为【appium1.5.0后,不支持使用name定位】所有大家在工作中使用id/xpath定位;如果还是想用name定位,需要修改源码,具体大家自己去查,但在工作中id/xpath已经够用。    今天介绍目前我工作最常用的一些方法,希望能帮......
  • Android布局容器&视图元素
    1.界面布局简介在Android中,界面布局是指如何组织和排列用户界面中的视图(View)元素,以形成用户所看到的界面。Android提供了多种布局容器(LayoutContainer)和视图元素(ViewElement),用于实现各种不同类型的用户界面。常用的Android界面布局容器有以下几种:LinearLayout:线性布局容器,......
  • 代码随想录算法训练营第四十五天| 503.下一个更大元素II 42. 接雨水
    503.下一个更大元素II 要求:数组是环,需要找到下一个最大的元素思路1:先作为直线遍历,然后没有的节点,放到首部,再找比他大的节点注意:头节点代码:1//要求:返回循环数组中下一个更大的数字步数2//思路:先不循环遍历,3//然后对每个-1节点,以他为起始,放到数组的开头,计算有几......
  • 化学绘图软件ChemDraw Mac版,绘制简单的化学元素
    ChemDraw是一款化学绘图软件,在化学领域中,它可以绘制简单的化学物质的结构,属性和数据,甚至是一些数据图表。它在绘制过程中所展现出来的强大功能是非常适合做精细研究的,并且操作非常简单,它只需要点击一下鼠标就可以进行简单的操作,一步操作就可以完成它。可以制作简单的颜色,形状,图表(......
  • pyspark 环境搭建和相关操作redis ,es
    一.环境搭建1.创建虚拟环境,指定python包2.切换到虚拟环境,安装你所需要的python相关模块包3.把整个虚拟环境打成.zip4.将zip上传的hadfs5.spark-submit指定python包的路径可以参考 https://dandelioncloud.cn/article/details/1589470996832964609二.pyspark数据r......
  • 怎么用js去除一组数据中重复的元素?
    怎么去除一组数据中重复的元素?functionremoveDuplicates(array){vartemp={}varresult=[]for(leti=0;i<array.length;i++){if(!temp[array[i]]){//如果设置当前元素的值不为truetemp[array[i]]=true//设置当前元素的值为true......
  • BFPRT 算法 (TOP-K 问题)——本质就是在利用分组中位数的中位数来找到较快排更合适的p
    下面为代码实现,其所求为前k小的数:#include<iostream>#include<algorithm>usingnamespacestd;intInsertSort(intarray[],intleft,intright);intGetPivotIndex(intarray[],intleft,intright);intPartition(intarray[],intleft,intright,intpivo......