SPARK學習之 --- eclipse / sbt / scala 配置


工做以及興趣所致,開始了spark學習之旅,瀏覽網上大牛們的博客 文章,而且結合官網docs,剛開始雲裏霧裏,如今也能霧裏看到點花了。 html

學習spark,首先咱們知道spark是由scala語言編寫而成,至於爲什麼,總結說來仍是語言的緣由,語言的優點,那麼scala就脫穎而出了, 光就我目前所瞭解所接觸,確實不少源碼中用scala實現是何等的簡潔,反觀java,有點點的辛酸。 java

那麼要不就先學習scala吧,之後還要靠着這語言來深刻理解spark來 閱讀spark源碼呢。 git

(1) 開發工具? github

(2) 項目構件工具? apache

(3) 打包部署? windows

開發工具,首先就想到的是 eclipse-scala ide插件,畢竟跟eclipse那麼多年的感受了,eclipse每天見。 服務器

Scala IDE for Eclipse

項目構件工具,本來也是安裝m2eclipse-scala插件,使用最熟悉的maven的,可是一來該插件更新地址目前好像很差使了,並且廣大博友也都認爲仍是 原生的sbt比較好,那麼仍是花點時間來了解下SBT(Simple Build Tool)吧。 網絡

SBT是scala語言項目的構建工具,就至關於maven是java項目工程的構建工具。SBT自己也很強大,二者的操做,構建流程都比較相似,因此使用maven的那種思想,去類比sbt便可。可是有一點須要弄清楚,由於目前好像eclipse中並無sbt的工具插件,不像eclipse中有m2e,能夠集成maven工具插件,因此在使用的過程當中 sbt的構建過程並非經過eclipse來完成,而是使用sbt和eclipse相互配合完成。這也是在使用過程當中有點不方便的地方。 eclipse

要使用sbt,先安裝吧,本章就講在windows下的安裝方法吧 http://www.scala-sbt.org/download.html 下載msi安裝包。本文安裝使用0.13.9版本。 maven

安裝後的目錄很是 簡潔:   /bin    /conf   配置好系統環境變量PATH,添加bin目錄所在。這樣咱們就能夠在任意位置執行sbt.bat腳本了。 

打開cmd命令窗口,輸入sbt 命令。 sbt首次運行的時候須要下載一些依賴包,說到下載依賴包,這裏再次插入一個話題拿就是當網絡環境中有代理服務器的時候。因爲在公司環境下有代理服務器的問題,因此在執行sbt以前必定主要要配置好代理服務器的地址信息。 我就簡單粗暴的再環境變量裏面分別配置了 

http_proxy=http://ip:port   

https_proxy=https://ip:port

兩個環境變量,這樣就能順利下載依賴包了。 

依賴包下載完成以後,就會順利的進入到了stb的交互式操做控制檯。

咱們知道常見maven項目後,在項目目錄下會有pom.xml文件,會有相應的.project, .classpath文件,這都是maven工程所特有的工程目錄結構,

一樣的基於sbt構建的scala項目工程也須要有相應的工程目錄結構,咱們想要生成這樣的目錄結構須要一個 sbt-eclipse插件。 https://github.com/typesafehub/sbteclipse ,

那麼如今的問題就是如何將這個插件添加到sbt中去:在安裝sbt後,會在操做系統的用戶目錄下面生成一個目錄文件


在上圖目錄中,建立一個文件夾命名爲plugins,在該文件夾中建立一個文本文件,命名爲build.sbt

該配置文件就是相對於sbt的一個全局配置。

咱們在該文件中添加,sbteclipse插件。

addSbtPlugin("com.typesafe.sbteclipse" % "sbteclipse-plugin" % "2.4.0")  

在cmd命令行,從新執行sbt命令,sbt會下載sbt-eclipse插件了。 

安裝完成sbt-eclipse插件之後,那麼使用sbt就能夠建立 eclipse下的基於sbt構建的項目工程結構了。

在eclipse的工程目錄 workspace下新建一個文件夾,文件夾命名爲scala-sbt-test。

在cmd命令窗口中定位到scala-sbt-test目錄下,執行sbt命令,進入sbt控制檯。sbt提供了eclipse命令,來生成基於sbt構建的eclipse工程結構。


生成好了 eclipse下基於sbt構建的工程目錄結構,那麼接下來就是將項目導入到eclipse

目前爲止,基於sbt構建的eclipse工程已經搭建完成。

maven項目的構建須要pom.xml,一樣的sbt項目的構建須要build.sbt配置文件,

第三方包的依賴,倉庫都配置,sbt相關的配置項都在build.sbt中配置添加。(具體該配置文件中配置什麼,怎麼配置,本文就詳述了,具體可看sbt官網描述。

注意:每次當build.sbt中相關配置變化後,須要生效的話,都須要執行 sbt eclipse命令來更新應用。


最後說一下 打包實現。

maven中打包須要assembly插件,一樣的sbt中也提供了assembly插件。

在全局build.sbt配置文件中,添加assembly插件

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


在項目工程下的build.sbt配置文件中,添加對 assembly插件的引用

import AssemblyKeys._  
assemblySettings


打包執行:

sbt  assembly 

命令。


最後把全局build.sbt內容以及項目下build.sbt文件內容分別展現下

全局build.sbt

resolvers += Resolver.url("artifactory", url("http://scalasbt.artifactoryonline.com/scalasbt/sbt-plugin-releases"))(Resolver.ivyStylePatterns)  
  
resolvers += "Typesafe Repository" at "http://repo.typesafe.com/typesafe/releases/"  
  
addSbtPlugin("com.typesafe.sbteclipse" % "sbteclipse-plugin" % "2.4.0")  
  
addSbtPlugin("com.eed3si9n" % "sbt-assembly" % "0.11.2")



項目下build.sbt

import AssemblyKeys._  
assemblySettings

name := "spark-scala-wordcount-network"  
  
version := "1.0"  
  
scalaVersion := "2.11.7"  
  
EclipseKeys.createSrc := EclipseCreateSrc.Default + EclipseCreateSrc.Resource  
  
libraryDependencies ++= Seq(  
  "org.apache.spark" % "spark-core_2.10" % "1.3.0" % "provided",
  "org.apache.spark" % "spark-streaming_2.10" % "1.3.0" % "provided", 
  "log4j" % "log4j" % "1.2.16" 
)  
  
resolvers ++= Seq(  
      // HTTPS is unavailable for Maven Central  
      "Maven Repository"     at "http://repo.maven.apache.org/maven2",  
      "Apache Repository"    at "https://repository.apache.org/content/repositories/releases",  
      "JBoss Repository"     at "https://repository.jboss.org/nexus/content/repositories/releases/",  
      "MQTT Repository"      at "https://repo.eclipse.org/content/repositories/paho-releases/",  
      "Cloudera Repository"  at "http://repository.cloudera.com/artifactory/cloudera-repos/",
      "nexus"               at "http://172.16.25.142/nexus/content/repositories/releases/",
      "nexus snapshot"      at "http://172.16.25.142/nexus/content/repositories/snapshots/",  
      Resolver.mavenLocal  
)
總結:花了點時間總算理清楚了 eclipse sbt scala之間的因果關係
相關文章
相關標籤/搜索