购买
下载掌阅APP,畅读海量书库
立即打开
畅读海量书库
扫码下载掌阅APP

4.2 Transformation Operations动手实战

1.以本地模式进行Spark API实战map、filter

首先以Spark的本地模式测试Spark API,以Local的方式运行spark-shell:

我们从前面已经使用过的parallelize出发:

下面进行filter操作:

但是,需要注意的是,最“正宗”的写法应该是以下函数式编程的风格:

采用这种方式,即符合Scala风格的写法,也是符合Spark的应用程序风格的写法,在Spark的编程中,大多数功能的实现都只要一行代码即可完成。

2.以集群模式进行Spark API实战textFile、cache

首先启动HDFS集群:

然后启动Spark集群:

最后让spark-shell运行在Spark集群上:

查看一下在前面章节中曾经上传到HDFS上的“README.md”这个问题,如图4-4所示。

图4-4 查看上传到HDFS上的“README.md”

下面读取该文件:

使用count统计一下该文件的行数:

下面对该RDD进行cache操作并执行count使得缓存生效:

此时耗时0.524046338 s,下面再次执行count操作:

此时是0.140096672 s,这是因为我们是直接基于cache后的数据进行的操作。

接着对上面的RDD进行wordcount操作:

通过saveAsTextFile把数据保存起来:

此时通过Web控制台查看一下运行结果,如图4-5所示。

进入文件夹后的效果如图4-6所示。

图4-5 通过Web控制台查看运行结果

图4-6 进入文件夹后的效果

进入查看执行结果,如果4-7所示。

图4-7 查看执行结果

3.在Spark中实现对Job输出结果进行排序

从wordcount的输出结果可以看出其执行结果是未经排序的,如何对Spark的输出结果进行排序呢?这个问题对于广告点击或者商品排名都是非常重要的。

在Spark中,其实用一行代码即可解决排序问题,如下所示。

我们是按照降序排序结果,此时HDFS的输出结果如图4-8所示。

图4-8 HDFS的输出结果

进入resultSorted文件夹,如图4-9所示。

图4-9 resultSorted文件夹

可以发现我们成功对输出结果进行了排序!

4.动手实战union、groupByKey、join

下面看一下union的使用:

使用collect操作查看一下执行结果:

下面看一下groupByKey的使用方法:

使用collect查看一下结果:

join操作就是一个笛卡儿积操作的过程,具体示例如下所示。

对rdd1和rdd2执行join操作:

使用collect查看执行结果:

可以看出join操作完全是一个笛卡尔积的操作。 5oYYdAM8KwRiw0X02HDgk4KpBCZM5sFwH5F5LHtYNEX9IZfEAsDQkHqDT7szhtYp

点击中间区域
呼出菜单
上一章
目录
下一章
×