3 PySpark RDD
Resilient Distributed Datasets(RDD) 弹性分布式数据集。它们是在多个节点上运行和操作并且在集群上进行并行处理的元素。 RDD是不可变元素,这意味着一旦创建了RDD,就无法对其进行更改。 RDD也具有容错能力,因此在发生任何故障时,它们会自动恢复。 可以在这些RDD上应用多个操作来完成某项任务。对开发者而言,RDD可以看作是Spark的一个对象,它本身运行于内存中,如读文件是一个RDD,对文件计算是一个RDD,结果集也是一个RDD ,不同的分片、 数据之间的依赖 、key-value类型的map数据都可以看做RDD。
要对这些RDD进行操作,有两种方法 :
转换 - 这些操作应用于RDD以创建新的RDD。 Filter,groupBy和map都是转换。
操作 - 这些是应用于RDD的操作,它指示Spark执行计算并将结果发送回驱动程序。
要在PySpark中应用任何操作,我们首先需要创建一个PySpark RDD。 以下代码块具有PySpark RDD类的详细信息 -
class pyspark.RDD (
jrdd,
ctx,
jrdd_deserializer = AutoBatchedSerializer(PickleSerializer())
)
让我们看看如何使用PySpark运行一些基本操作。 Python文件中的以下代码创建RDD,其中存储了一组单词。
words = sc.parallelize (
["scala",
"java",
"hadoop",
"spark",
"akka",
"spark vs hadoop",
"pyspark",
"pyspark and spark"]
)
count()
----------------------------------------count.py---------------------------------------
from pyspark import SparkContext
sc = SparkContext("local", "count app")
words = sc.parallelize (
["scala",
"java",
"hadoop",
"spark",
"akka",
"spark vs hadoop",
"pyspark",
"pyspark and spark"]
)
counts = words.count()
print("Number of elements in RDD -> %i" % (counts))
-----------------------------------