RDD创建
从文件系 统中加载数据创建RDD
Spark采用extFile()方法来从文件系统中加载数据创建RDD
该方法把文件的URI作为参数,这个URI可以是:
本地文件系统的地址
或者是分布式文件系统HDFS的地址
或者是Amazon S3的地址等等
(1)从本地文件系统中加载数据创建RDD
from pyspark import SparkConf, SparkContext
conf = SparkConf().setMaster("local").setAppName("My App")
sc = SparkContext(conf = conf)
lines = sc.textFile("file:///usr/local/spark/mycode/rdd/word.txt")
lines.foreach(print)
Hadoop is good
Spark is fast
Spark is better
(2)从分布式文件系统HDFS中加载数据,三条语句是完全等价的,可以使用其中任意一种方式
lines = sc.textFile("hdfs://localhost:9000/user/hadoop/word.txt")
lines = sc.textFile("/user/hadoop/word.txt")
lines = sc.textFile("word.txt")
通过并行集合(列表)创建RDD
可以调用SparkContext的parallelize方法,在Driver中一个已经存在的集合 (列表)上创建。
array = [1,2,3,4,5]
rdd = sc.parallelize(array)
rdd.foreach(print)
1
2
3
4
5
RDD操作
转换操作
filter(func)
筛选出满足函数func的元素,并返回一个新的数据集
lines = sc.textFile("file:///usr/local/spark/mycode/rdd/word.txt")
linesWithSpark = lines.filter(lambda line: "Spark" in line)
linesWithSpark.foreach(print)
Spark is better
Spark is fast
map(func)
将每个元素传递到函数func中,并将结果返回为一个新的数据集
data = [1,2,3,4,5]
rdd1 = sc.parallelize(data)
rdd2 = rdd1.map(lambda x:x+10)
rdd2.foreach(print)
11
13
12
14
15