使用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數據

這些程序均可以在官方網站查看獲得。

相關文章
相關標籤/搜索