本文中所需初始环境请参照Spark Hadoop 环境搭建
hello word
几乎任何编程语言都会提供一个 “hello, world” 示例程序,算是编程文档中的标配了,来源参见 维基百科词条
"hello world" 现在已经成为窥视编程语言的一个标识了,区别于C系列语言,在某些地方也许不再是简单地输出字符串 "hello world" 了哦。
Spark 提供了一个交互式命令行工具 spark shell 给我们使用,能够快速地进行简单查询
大数据版本的 “hello world” 都不再是输出 “hello world" 字符串,而是给出一个 word count (数据中的单词统计)程序。
"Hello world" In Spark shell
当 Hadoop 和 Spark 环境搭建好之后,启动Hadoop相关服务,然后再启动 Spark 相关服务,在浏览器中输入 "http://server-1:50070" 可以看到Hadoop系统相关信息,在浏览器中输入 "http://server-1:4040/" 可以看到Spark shell中正在处理一些任务信息
下面用 Spark shell 写一个简单的单词统计程序
启动两个SSH登录窗口,这样操作起来更加便利一些,一个用来启动 Spark shell 进行交互式操作,另外一个用来进行 Hadoop 文件操作
在本地电脑中新建一个测试文本文件命名为 "example.txt",从网上找一篇文章用来进行单词统计,例如这篇
在 server-1 上的 "/opt/hadoop-2.6.0" 目录中创建 "upload" 子目录,同时上传测试文本文件 "example.txt"到该文件夹
# 建立上传中转目录
cd /opt/hadoop-2.6.0 && mkdir upload
# 我在系统中安装了 lrzsz 工具,并且使用的 Xshell(支持 lrzsz)
# rz 命令即可上传本机的文件,强烈推荐该工具
rz
- 在hdfs中创建文件夹并上传文件
# 目前所在目录 /opt/hadoop-2.6.0/upload,在hdfs中创建目录
../bin/hadoop fs -mkdir -p /tmp/test
# 上传服务器磁盘中的文件到hdfs中,然后在 Hadoop 中就可以看到该文件了
../bin/hadoop fs -put example.txt /tmp/test/
# 如果有不明白的地方可以使用 ../bin/hadoop fs 寻求相关帮助,会列出有关文件操作命令
- 切换到 Spark shell 进行 word count
# sc 代表的是Spark上下文
var exampleFile = sc.textFile("hdfs://server-1:9000/tmp/test/example.txt")
# 统计单词的数量,单词给予空格隔开
exampleFile.flatMap(line => line.split(" "))
.map(word => (word, 1))
.reduceByKey((a, b) => a + b)
.collect
是不是觉得里面有很多怪异的函数名?因为默认采用的是 Scala ,而 Scala 里面还有很多语法糖哦,如果想掌握更多的知识,Scala是必须掌握的语言。
推荐学习资料
汇智网学习资料,课程链接,里面整合了所有环境,能够随时随地学Spark
Spark 基础知识,mastering-apache-spark,这是一位gitbooks.io作者写的一本简明教程。