创建RDD
从本地文件创建
# 1.初始化 SparkContext,该对象是 Spark 程序的入口
sc=SparkContext('local','sapp')
# 文本文件 RDD 可以使用创建 SparkContext 的t extFile 方法。此方法需要一个 URI的 文件(本地路径的机器上,或一个hdfs://,s3a://等URI),并读取其作为行的集合
# 2.读取本地文件,URI为:/root/wordcount.txt
rdd = sc.textFile('/root/wordcount.txt')
# 3.使用 rdd.collect() 收集 rdd 的内容。 rdd.collect() 是 Spark Action 算子,在后续内容中将会详细说明,主要作用是:收集 rdd 的数据内容
result=rdd.collect()
# 4.打印 rdd 的内容
print(result)
用数组创建
data =[("spark",2),("hadoop",6),("hadoop",4),("spark",6)]
rdd =sc.parallelize(data)
RDD简单操作
data =[("spark",2),("hadoop",6),("hadoop",4),("spark",6)]
rdd =sc.parallelize(data)
rdd.collect()
Out[102]: [('spark', 2), ('hadoop', 6), ('hadoop', 4), ('spark', 6)]
rdd_1 = rdd.mapValues(lambda x : (x,1))
rdd_1.collect()
Out[103]: [('spark', (2, 1)), ('hadoop', (6, 1)), ('hadoop', (4, 1)), ('spark'
, (6, 1))]
1 rdd_2 = rdd_1.reduceByKey(lambda x,y : (x[0]+y[0],x[1] + y[1]))
2 rdd_2.collect()
Out[104]: [('hadoop', (10, 2)), ('spark', (8, 2))]
1 rdd_3 = rdd_2.mapValues(lambda x : (x[0] / x[1]))
2 rdd_3.collect()
Out[105]: [('hadoop', 5.0), ('spark', 4.0)]
1 rdd \
2 .mapValues(lambda x : (x,1)) \
3 .reduceByKey(lambda x,y : (x[0]+y[0],x[1] + y[1])) \
4 .mapValues(lambda x : (x[0] / x[1])) \
5 .collect()
Out[106]: [('hadoop', 5.0), ('spark', 4.0)]