使用scala开发spark入门总结

使用scala开发spark入门总结html

1、spark简单介绍java

关于spark的介绍网上有不少,能够自行百度和google,这里只作简单介绍。推荐简单介绍链接:http://blog.jobbole.com/89446/python

一、    spark是什么?git

Spark是UC Berkeley AMP lab (加州大学伯克利分校的AMP实验室)所开源的类Hadoop MapReduce的通用并行框架。通常配合hadoop使用,能够加强hadoop的计算性能。github

二、    Spark的优势有哪些?算法

Spark拥有Hadoop MapReduce所具备的优势;但不一样于MapReduce的是Job中间输出结果能够保存在内存中,从而再也不须要读写HDFS,所以Spark能更好地适用于数据挖掘与机器学习等须要迭代的MapReduce的算法。apache

值得注意的是:spark是经过scala这一编程语言开发的。虽然spark的开发语言支持java和python,可是编写spark程序最好仍是使用scala编写,一是代码简洁,二是函数式的易读性比较好,最重要的是scala可以帮助咱们更好的理解spark的工做过程。编程

 

2、Scala和sbt简单介绍json

Scala 是一门多范式(multi-paradigm)的编程语言,设计初衷是要集成面向对象编程和函数式编程的各类特性。Scala 运行在Java虚拟机上,并兼容现有的Java程序。Scala 源代码被编译成Java字节码,因此它能够运行于JVM之上,并能够调用现有的Java类库。框架

Scala推荐学习网站:http://www.runoob.com/scala/scala-tutorial.html 若是喜欢看视频教程的话推荐慕课网的scala教程:http://www.imooc.com/learn/613

相似于开发Java程序使用maven管理项目,scala项目的管理工具是sbt。Sbt是Simple Build Tool的缩写,它是对scala或Java语言进行编译的一个工具,它须要JDK1.6或更高的版本支持。

 

3、安装scala和sbt

具体的安装网上有不少教程,都介绍的很清楚。下面是一些推荐的链接。

Scala官网连接:http://www.scala-lang.org/

Scala安装连接:http://www.runoob.com/scala/scala-install.html (与jdk的安装大同小异)

Sbt安装连接:http://www.importnew.com/4311.html 详细介绍了sbt的优势,项目目录结构,如何常见一个sbt工程等。

值得注意的是:

l  sbt安装并不困难,可是安装完成以后再命令窗口第一次运行sbt命令的时候,sbt会默认下载须要用到的包,这个过程很是消耗时间,须要耐心等待,若是遇到一些包很大,很长时间都没有下载完成的话,能够手动下载这个包,并把包放到命令行显示的路径下面。

l  sbt的本地仓库尽可能修改,默认目录在C盘。

4、使用开发工具

Scala的IDE通常有两个:Scala IDE for Eclipse 和 IntelliJ Idea,对于习惯使用eclipse的用户可使用scala ide for eclipse,下载连接:http://scala-ide.org/。两个IDE都比较好用。我的感受,idea对于插件的安装以及win环境下命令窗口的支持要比eclipse好用一点,更推荐使用idea开发。

使用sbt:

真正写起程序和项目来,确定要使用项目管理工具的。Sbt是编写scala项目的经常使用管理工具。

  1. Sbt项目构建

Sbt目前使用的人还不是不少,不能要求像maven那样方便。Sbt项目的结构目录为:

 

src目录详解

Maven用户对src目录的结构应该不会感到陌生,下面简单介绍各个子目录的做用。

  • · src/main/java目录存放Java源代码文件
  • · src/main/resources目录存放相应的资源文件
  • · src/main/scala目录存放Scala源代码文件
  • · src/test/java目录存放Java语言书写的测试代码文件
  • · src/test/resources目录存放测试起见使用到的资源文件
  • · src/test/scala目录存放scala语言书写的测试代码文件

build.sbt详解

读者能够简单的将build.sbt文件理解为Maven项目的pom.xml文件,它是build定义文件。 SBT运行使用两种形式的build定义文件,一种就是放在项目的根目录下,即build.sbt, 是一种简化形式的build定义; 另外一种放在project目录下,采用纯Scala语言编写,形式更加复杂,固然,也更完备,更有表现力。

         具体的使用能够参照网上的介绍

推荐连接:http://www.th7.cn/Program/java/201309/149445.shtml

  1. sbt项目生成

上面介绍的这些目录能够本身建立,而后导入到IDE中。生产相应IDE的工具备:

Sbt Eclipse 插件

推荐连接:http://www.cnblogs.com/rxingyue/p/4398591.html

有2种配置方式:一种是在 ~/.sbt/0.13/plugins//build.sbt 里配置addPlugin,这种作法是全局的插件,即对本机全部sbt项目均使用。另外一种是每一个项目不同的plugins,则是在每一个项目跟目录下project/plugins.sbt里进行插件配置。 plugins.sbt里面内容配置,添加插件:addSbtPlugin("com.typesafe.sbteclipse" % "sbteclipse-plugin" % "2.4.0")

在根目录的build.sbt里添加EclipseKeys.createSrc := EclipseCreateSrc.Default + EclipseCreateSrc.Resource,再执行sbt eclipse。

这样就能够生成eclipse项目了,直接导入项目就可使用了。

 

 

Sbt Idea 插件

在项目目录下的project/plugins.sbt中添加插件

addSbtPlugin("com.github.mpeltonen" % "sbt-idea" % "1.6.0")

在命令行输入sbt ,会自动安装插件。

安装完插件以后,在命令行(项目根目录)输入sbt gen-idea能够帮咱们生成IntelliJ Idea的相关文件。

 

以上两个插件还有一个重要做用就是能够帮咱们导入build.sbt中用到的依赖,这样咱们就能够在开发环境进行一些测试。

  1. sbt项目打包

使用assembly插件。参照博客:http://www.cnblogs.com/rxingyue/p/4398591.html

Assembly是做为一种插件的,因此要在project下面的plugins.sbt里面配置。

addSbtPlugin("com.eed3si9n" % "sbt-assembly" % "0.11.2")

除了插件的配置以外,还须要配置跟目录下build.sbt,支持assembly,在文件头部加入:

import AssemblyKeys._

assemblySettings

5、一些坑及解决办法

一、    Sbt下载依赖慢

这是很正常的问题,毕竟默认的远程仓库都在国外。能够选择更改库,能够全局更改,也能够针对项目进行更改,在build.sbt里面配置内容:

resolvers ++= Seq(

  // HTTPS is unavailable for Maven Central

  "Maven Repository" at "http://repo2.maven.apache.org/maven2",

  "Apache Repository" at "https://repository.apache.org/content/repositories/releases",

  "MQTT Repository" at "https://repo.eclipse.org/content/repositories/paho-releases/",

  "Cloudera Repository" at "http://repository.cloudera.com/artifactory/cloudera-repos/",

  Resolver.mavenLocal

)

另外的办法:对于一些比较大的包,能够手动下载而后放到相应的目录。(通常把下载的地址给迅雷,下载会快不少,这种办法只针对个别状况)

二、    依赖的版本问题

互相依赖的包之间,可能出现版本的冲突,最好保持版本一致。

形如

libraryDependencies ++= Seq(

  "org.json4s" %% "json4s-native" % "3.2.10",

  "org.json4s" %% "json4s-jackson" % "3.2.10"

)

中间两个百分号的依赖是不指定版本的,版本有scala的版本肯定。

形如

libraryDependencies += "org.apache.kafka" % "kafka_2.10" % "0.10.0.0"

中间有一个百分号的依赖是指定版本的。

三、    Sbt找不到依赖

找不到依赖,能够在引用的依赖后面写一下依赖的地址。例如:

libraryDependencies += "net.sf.json-lib" % "json-lib" % "2.4" from "http://repo1.maven.org/maven2/net/sf/json-lib/json-lib/2.4/json-lib-2.4-jdk15.jar"

6、Spark经典入门示例

一、    WordCount

二、    SparkStreaming读取kafka数据

这些程序均可以在官方网站查看获得。

相关文章
相关标签/搜索