赞
踩
通过前面几章的介绍,我们已经了解了Spark的运行架构和RDD设计与运行原理,并介绍了RDD操作的两种类型:转换操作和行动操作。
同时,我们前面通过一个简单的WordCount实例,也大概介绍了RDD的几种简单操作。现在我们介绍更多关于RDD编程的内容。
Spark中针对RDD的操作包括创建RDD、RDD转换操作和RDD行动操作。
RDD创建
RDD可以通过两种方式创建:
* 第一种:读取一个外部数据集。比如,从本地文件加载数据集,或者从HDFS文件系统、HBase、Cassandra、Amazon S3等外部数据源中加载数据集。Spark可以支持文本文件、SequenceFile文件(Hadoop提供的 SequenceFile是一个由二进制序列化过的key/value的字节流组成的文本存储文件)和其他符合Hadoop InputFormat格式的文件。
* 第二种:调用SparkContext的parallelize方法,在Driver中一个已经存在的集合(数组)上创建。
创建RDD之前的准备工作
在即将进行相关的实践操作之前,我们首先要登录Linux系统(本教程统一采用hadoop用户登录),然后,打开命令行“终端”,请按照下面的命令启动Hadoop中的HDFS组件:
cd /usr/local/hadoop
./sbin/start-dfs.sh
然后,我们按照下面命令启动pyspark:
cd /usr/local/spark
./bin/pyspark
然后,新建第二个“终端”,方法是,在前面已经建设的第一个终端窗口的左上方,点击“终端”菜单,在弹出的子菜单中选择“新建终端”,就可以打开第二个终端窗口,现在,我们切换到第二个终端窗口,在第二个终端窗口中,执行以下命令,进入之前已经创建好的“/usr/local/spark/mycode/”目录,在这个目录下新建rdd子目录,用来存放本章的代码和相关文件:
cd usr/local/spark/mycode/
mkdir rdd
然后,使用vim编辑器,在rdd目录下新建一个word.txt文件,你可以在文件里面随便输入几行英文语句用来测试。
经过上面的准备工作以后,我们就可以开始创建RDD了。
从文件系统中加载数据创建RDD
Spark采用textFile()方法来从文件系统中加载数据创建RDD,该方法把文件的URI作为参数,这个URI可以是本地文件系统的地址,或者是分布式文件系统HDFS的地址,或者是Amazon S3的地址等等。
下面请切换回pyspark窗口,看一下如何从本地文件系统中加载数据:
>>> lines = sc.textFile("file:///usr/local/spark/mycode/rdd/word.txt")
下面看一下如何从HDFS文件系统中加载数据,这个在前面的第一个Spark应用程序:WordCount实例中已经讲过,这里再简单复习一下。
请根据前面的第一个Spark应用程序:WordCount实例中的内容介绍,把刚才在本地文件系统中的“/usr/local/spark/mycode/rdd/word.txt”上传到HDFS文件系统的hadoop用户目录下(注意:本教程统一使用hadoop用户登录Linux系统)。然后,在pyspark窗口中,就可以使用下面任意一条命令完成从HDFS文件系统中加载数据:
>>> lines = sc.textFile("hdfs://localhost:9000/user/hadoop/word.txt")
>>> lines = sc.textFile("/user/hadoop/wo
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。