PySpark之RDD入门最全攻略! |
您所在的位置:网站首页 › list转rdd › PySpark之RDD入门最全攻略! |
众所周知,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 |