PySpark之RDD入门最全攻略!

您所在的位置:网站首页 list转rdd PySpark之RDD入门最全攻略!

PySpark之RDD入门最全攻略!

2024-07-13 15:43| 来源: 网络整理| 查看: 265

众所周知,Spark的核心是RDD(Resilient Distributed Dataset)即弹性分布式数据集,属于一种分布式的内存系统的数据集应用。Spark主要优势就是来自RDD本身的特性,RDD能与其他系统兼容,可以导入外部存储系统的数据集,例如,HDFS、HBase或者其他Hadoop数据源。

1、RDD的基本运算

RDD运算类型

说明

转换(Transformation)

转换运算将一个RDD转换为另一个RDD,但是由于RDD的lazy特性,转换运算不会立刻实际执行,它会等到执行到“动作”运算,才会实际执行。

动作(Action)

RDD执行动作运算之后,不会产生另一个RDD,它会产生数值、数组或写入文件系统;RDD执行动作运算后会立刻实际执行,并且连同之前的转换运算一起执行。

持久化(Persistence)

对于那些会重复使用的RDD, 可以将RDD持久化在内存中作为后续使用,以提高执行性能。

2、基本RDD“转换”运算

首先我们要导入PySpark并初始化Spark的上下文环境:

初始化代码语言:javascript复制from pyspark import SparkConf, SparkContext sc = SparkContext()创建RDD

接下来我们使用parallelize方法创建一个RDD:

代码语言:javascript复制intRDD = sc.parallelize([3,1,2,5,5])stringRDD = sc.parallelize(['Apple','Orange','Grape','Banana','Apple'])RDD转换为Python数据类型

RDD类型的数据可以使用collect方法转换为python的数据类型:

代码语言:javascript复制print (intRDD.collect()) print (stringRDD.collect())

输出为:

代码语言:javascript复制[3, 1, 2, 5, 5] ['APPLE', 'Orange', 'Grape', 'Banana','Apple']map运算

map运算可以通过传入的函数,将每一个元素经过函数运算产生另外一个RDD。 比如下面的代码中,将intRDD中的每个元素加1之后返回,并转换为python数组输出:

代码语言:javascript复制print (intRDD.map(lambda x:x+1).collect())

结果为:

代码语言:javascript复制[4, 2, 3, 6, 6]filter运算

filter可以用于对RDD内每一个元素进行筛选,并产生另外一个RDD。 下面的例子中,我们筛选intRDD中数字小于3的元素,同事筛选stringRDD中包含ra的字符串:

代码语言:javascript复制print (intRDD.filter(lambda x: x


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3