[置顶] Spark初试之WordCount

关于搭建spark集群的方法请参考:

Hadoop集群搭建http://blog.csdn.net/u013468917/article/details/50965530

Spark集群搭建http://blog.csdn.net/u013468917/article/details/50979184

搭建好集群后就可以开始着手写一个“Hello World"了,当然对于Spark来说,所谓的”Hello World“程序就是WordCount。

运行环境说明:

系统:Ubuntu 12.04.5 LTS 64位

java版本:1.7.0_80

Hadoop版本:hadoop-2.2.0

Scala版本:2.10.1

Spark版本:spark-1.3.0


由于本人比较习惯用eclipse,所以本次WordCount是在eclipse下编写的,当然目前大部分开发者都比较推崇IntelliJ IDEA。可惜这个软件貌似很耗cpu,渣本难以承受。只好继续用回eclipse,尽管真的很慢。所以如果电脑配置的CPU是i5及以上,还是用IntelliJ比较好。

eclipse可以在官网下载,具体下载安装流程就不细表了。地址在这里:http://scala-ide.org/

安装完成后打开eclipse,下面正式开始:

编程准备

首先FIle->New->Scala project :新建一个Scala工程,名称就叫TestSpark_01好了。JRE选择1.7/1.8都可以。

[置顶] Spark初试之WordCount_第1张图片

然后在工程中的src文件夹上面右击->new ->Package,包名随便取。

最后在包上面右击->New->Scala Object,这里cn.hunan是我的包名,在后面再添上文件名即可。由于名为WordCount的Object之前建立过,所以这里会报一个重名的错误,读者忽略即可。

[置顶] Spark初试之WordCount_第2张图片

代码

注意在写代码之前一定要先导入相关的依赖。
首先要将工程中自动生成的Scala library container文件夹删除,否则工程会由于Scala版本冲突出现错误。
然后在Spark安装目录的lib目录下找到spark-assembly-1.3.0-hadoop2.3.0.jar这个文件,以“spark-assembly-”开头,后面的因版本而异。这个就是Spark程序的依赖jar包。在工程上右击,新建一个名为lib的文件夹,将jar包复制过来,然后在jar包上右击->buildpath->add to buildpath即可。

本次的WordCount是用Scala语言写的,也是Spark的原生语言,有志于学好Spark的同学都应该了解一下。代码如下:
package cn.hunan

import org.apache.spark._
import org.apache.spark.SparkContext._

object WordCount {
  def main(args: Array[String]){
    val conf = new SparkConf()
    val sc = new SparkContext(conf)
    val line = sc.textFile(args(0))
    
    val result = line.flatMap(_.split("[^a-zA-Z]+")).map((_, 1)).reduceByKey(_+_)
    result.saveAsTextFile(args(1))
    sc.stop()
  }
}
这里用了一个空的SparkConf()需要自己在运行程序的时候,手动添加配置参数。大家可以发现,Scala实际上只用的一行代码就完成了WordCount。
接下来就可以导出jar包了。在WordCount.Scala文件上右击->Export,然后选择JAR file
[置顶] Spark初试之WordCount_第3张图片

点击Next,像这样勾选就可以:
[置顶] Spark初试之WordCount_第4张图片
包名为WC.jar,存放在E:\myjar目录下。接下来需要把Jar包上传至Spark集群。我用的是SecureCRT,大家可以百度一下,挺好用的。

我们还需要一个用来测试的文本文件,我用的是《简·爱》的英文版,当然也可以自己随便写一个。写完之后要将文本文件上传至HDFS,这也是Spark应用程序默认的读取文件的地方。
将文本上传至linux文件系统中,然后:
hadoop fs -put Jane1.txt /Spark/Jane1.txt
将文件上传至HDFS的/Spark/目录下并命名为Jane1.txt

切换到目录SPARK_HOME/bin目录下:在linux shell中执行以下命令:
./spark-submit --class cn.hunan.WordCount --master yarn ~/HunanJar/WC.jar /Spark/Jane1.txt /Spark/out
说明:--class指定的是运行的主类;--master指定运行模式,由于我的集群使用的调度器是yarn所以写的是yarn;后面的是jar包的具体位置,然后是程序运行需要的两个参数
分别是输入和输出路径。

等待执行结束后就可以看到在HDFS://Spark/out目录下生成了以下文件:

打开看看:
[置顶] Spark初试之WordCount_第5张图片
通过本例,大家大概可以看到一个Spark程序的运行过程是怎样的。

你可能感兴趣的:(scala,spark,wordcount)