编者按:灯塔大数据将每周持续推出《从零开始学大数据算法》的连载,本书为哈尔滨工业大学著名教授王宏志老师的扛鼎力作,以对话的形式深入浅出的从何为大数据说到大数据算法再到大数据技术的应用,带我们在大数据技术的海洋里徜徉~每周五定期更新
上期回顾&查看方式
在上一期,我们学习了在 Spark 上实现 WordCount 的相关内容。PS:了解了上期详细内容,请在自定义菜单栏中点击“灯塔数据”—“技术连载”进行查看;或者滑到文末【往期推荐】查看
No.73
在 HDFS 上使用 Spark
小可 :Spark 不是一个并行计算平台吗?如果我们读取文件时都从本地读取的话,那么Spark 不就仅仅运行在一台计算机上了吗?
Mr. 王笑着说:你能想到这个问题非常好。没错,如果我们希望 Spark 运行在多台计算机上,还要有一个分布式文件系统予以支持,如果输入输出文件存放在多台计算机上,那么 Spark 也就自然在多台计算机上运行了。
小可 :分布式文件系统……在学习 Hadoop 时,我们使用的是 HDFS,这次我们还用HDFS 可以吗?
Mr. 王 :很好,Spark 依然可以将输入输出文件放在 HDFS 上,以便于在多台计算机上运行 Spark 程序。这次,输入文件将不再来自于本地磁盘,而是来自于 HDFS。
首先,我们要启动 HDFS 服务。
然后,还要记得格式化 HDFS。
最后,我们去 HDFS 的 Web 页面检查一下 HDFS 是不是已经正常启动并格式化好了。用浏览器打开 URL :localhost:50070
小可 :嗯,又看到熟悉的画面了,HDFS 的NameNode 状态信息显示出来了,HDFS 已经可以正常启动了。
Mr. 王 :我们再用 HDFS 的 ls 命令查看一下此时这里面的文件。
现在我们在本地创建一个包含一些随机句子的文本文件。
实验使用的文本文件的内容如下 :
然后将它放入 HDFS 中,使用 HDFS 的 -put 命令,依然要注意放置文件的路径关系。
再用 ls 命令查看一下,文件是不是已经成功地放进去了。
小可 :找到了,这就是我们刚刚放进去的文本文件!
Mr. 王 :好的,接下来可以去 Spark 那里,执行下一步工作了。
使用切换目录的命令 :
Mr. 王 :接下来还是一样启动 Python Spark Shell。
在大段提示信息之后,出现“>>>”命令提示符。
我们依然采用下面的格式来输入文本文件。
这里注意,输入文件如果来自于 HDFS,则要在文件路径前面加 hdfs://,以便系统识别。后面部分是 HDFS 的访问路径,由于本实验是在本地进行的,所以输入 localhost:9000,这是访问 HDFS 的路径。接下来就是文件放置的位置,和前面放进HDFS 时是一致的。
在完成了从 HDFS 加载文件之后,我们就可以按照需要完成接下来的操作了。我们要做的是选出所有句子中带有“Spark”关键词的句子,并将它们返回。
程序的输出结果如下 :
注意观察输出结果的最后一行,三个引号里面的部分分别是 I am a rookie of Spark、Spark is a good platform、Have fun with Spark 三个句子。对比一下之前我们输入的文件,这的确是Spark 出现的三个地方,运行结果还是比较准确的。
另外,还记得我们在学习 WordCount 时用过的saveAsTextFile 函数吗?
我们同样可以使用下面这条命令,将运行结果存储到 HDFS 中,这样更加符合分布式并行计算产生结果的数据量同样比较大这个特点。
下期精彩预告
经过学习,我们研究了在 HDFS 上使用 Spark涉及到的一些具体问题。在下一期中,我们将进一步了解Spark 的核心操作——Transformation 和 Action的相关内容。更多精彩内容,敬请关注灯塔大数据,每周五不见不散呦!
文章作者:王宏志
文章编辑:天天