摘要:
Spark是公司当前使用的大数据分析工具之一,这里就来初步的了解下Spark的应用。
在本文中,首先对Spark及其依赖工具进行安装和配置,并配置使得能够在IDEA下进行程序的开发。
文章最后使用IDEA开发一个《使用Kmeans算法求解鸢尾花》的大数据分析程序。
-----------------------------------------------------------------------------------------------------------------------------------------
学习Scala,emmmmmmm.....Why?
看来自网上的摘录
“Spark主要的编程语言是Scala,选择Scala是因为它的简洁性(Scala可以很方便在交互式下使用)和性能(JVM上的静态强类型语言)。Spark支持Java编程,但对于使用Java就没有了Spark-Shell这样方便的工具,其它与Scala编程是一样的,因为都是JVM上的语言,Scala与Java可以互操作,Java编程接口其实就是对Scala的封装。”
“”
学不学,就看自己了。
说在前面,以下要学到Scala和SBT,内容虽然很多,但很好理解。因为创造Scala语言的人本身就来自于Java团队,所以记住一点就成:Scala对应Java,SBT对应maven,连语法都一样。
1.安装Scala(对应java)
http://www.linuxidc.com/Linux/2015-04/116455.htm(配置仅对当前用户有效)
来个小程序测试一下
任意有权限的位置新建一个HelloWord.scala文件
>geditHelloWord.scala
填入一下内容
objectHelloWord{
def main(args: Array[String]) = println("HelloWord")
}
这里没有写Package,如果写了,编译的时候就会以当前文件夹为主文件夹,按照Package为路径创建一些列文件夹,给编译造成麻烦。
注意大小写敏感
然后在控制台输入
>scalacHelloWord.scala
>scalaHelloWord
HelloWord
Thisis the end of your First Scala Program!
2.在IDEA下编写Scala程序(withDemo)
2.0在IDEA中安装Scala和SBT这两个插件,scala在插件库里就可以安装,
安装SBT http://www.scala-sbt.org/download.html
如果下载不下来,下载时要在这个地址上右键链接另存为才能下载下来
安装说明
http://www.bkjia.com/Linuxjc/848202.html
安装最后一步SBT-version要下载很多内容,花很长时间(几小时),去干点别的。
安装Scala插件成功的标志是IDEA支持创建scala项目,具体的表现是在src文件夹下右键有创建“scala类”的选项。安装SBT成功时,创建withsbt的scala项目时,会在项目的根目录下出现sbt.xml文件,来做包管理。
接下来我们看下在IDEA中编写程序有多方便。
2.1创建一个withoutSBT项目(普通java项目)
http://lidrema.blog.163.com/blog/static/20970214820146312260633/
Step1 创建新项目
Step2 左侧选scala,右边选scala,下一步
Step3 输入项目名,SBTversion和Scalaversion应该是有的,没有就选择安装他俩的根目录,点选AutoImport方便编程
Step4项目结构很原始,那么 sbt能不能做到自动创建目录和配置文件呢,答案是:本身不能。但 sbt是一个插件化很彻底东西,可以引入很多功能,包括自动项目目录构建,参考这个网站http://unmi.cc/sbt-np-create-folders-build-sbt/ 以及这个软件 https://github.com/softprops/np。但因为构建目录本来不麻烦,在IDEA中也可以节省很多步骤,我们且用手动构建的方式。SBT推荐的Scala项目结构是
Step5在src/main/scala下创建一个ScalaScript(*.scala), 然后将之前的HelloWord程序铁进去,然后在第一行补充一个 Packagescala;
Step6 右键,Run“HelloWord”
这里补充一个对build.sbt的说明 地址:使用百度文档搜索 《使用SBT构建Scala应用》
2.2创建一个SBT项目(对应Maven项目)
http://8liang.cn/intellijidea-install-scala-plugin-create-with-sbt-project/
如果这一步显示NoScala SDK support,则项目右键->AddFreamwork Support->Scala->选中
Scala安装的根目录即可。
可以看一下两者的风格上的不同。注意在withoutSBT项目下,不能用SBT对Scala程序进行编译,而是用IDEA自带的Make程序进行编译。
不建议SBT模式,下载依赖包的时间非常非常的长!
3.安装Spark
安装Spark很简单,这里需要说明两点
1>Spark的安装包不包括Hadoop,需要时要单独安装;
2>单机开发Spark不需要安装Hadoop;
3>单机开发安装Standalone模式。
具体安装参考http://blog.csdn.net/hxpjava1/article/details/19177913
4.BigDemo 在Spark上运行一段Scala语言编写的K-means算法。
K-means,典型的聚类算法,无监督学习算法之一,应用如将一群客户按照属性分成不同的类别,从而划分客户细分 等等。
K-means计算速度快,聚类效果好,是经典常用的聚类算法。
K-means算法见 http://www.csdn.net/article/2012-07-03/2807073-k-means
K-means的Scala代码见 http://yuncode.net/code/c_517d4651060e356
准备
下载Iris数据集,这个数据集是测试聚类算法的经典数据集,既有数据也有正确的标注。将链接中的数据拷贝到一个文本文档中,然后将Iris-setosa替换位1,Iris-versicolor替换为2,将Iris-virginica替换为3,1/2/3即为标注,也即正确的分类结果。
http://archive.ics.uci.edu/ml/machine-learning-databases/iris/iris.data
Step1 IDEA中新建Scala项目
Step2 新建K-means.scala并敲入代码
Step3 执行
Tobe continued ...