linuxsbt編譯
1. 怎麼linux查看開啟amt,ism,sbt服務
rc後綴來源於Unix系統的前輩CTSS,它其中有個叫做「runcom」的命令腳本功能。早期的Unix版本使用rc在操作系統啟動腳本的文件名中,以尊重CTSS的成果。
2. 如何配置sbt的build.sbt使得編譯時將依賴包也打包進去
首先問題解決了,就是sbt-assembly插件的配置問題。這個文檔自己前兩次讀表示看不懂意思。過2天又仔細看了一遍大致明白了,敢動手操作了。
assembly插件的目的是:
The goal is simple: Create a fat JAR of your project with all of its dependencies.
即將項目依賴的大文件也打包到生成的jar中。我的報錯Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/spark/streaming/kafka/KafkaUtils$就是因為包含KafkaUtil的jar包沒打包到jar中。
配置使用插件
下面是我的scala項目目錄結構:
.
├── assembly.sbt
├── build.sbt
├── project
├── README.md
├── run-assembly.sh
├── run.sh
├── src
└── target
插件的配置取決於sbt的版本,詳情見這里
我的是sbt 0.13.8,所以在project/assembly.sbt添加(assembly.sbt)要自己創建:
addSbtPlugin("com.eed3si9n" % "sbt-assembly" % "0.14.0")
配置assembly的參數
參數在項目根目錄下新建assembly.sbt。
直接引入插件就可以用
sbt assembly
編譯了,但是由於我的sbt下載了大量的依賴包,在編譯的時候遇到了編譯包沖突的問題。這個時候需要配置Merge Strategy(合並策略)
3. linux下用sbt編譯scala需要安裝哪些工具
1、下載sbt通用平台壓縮包:sbt-0.13.5.tgz2、建立目錄,解壓文件到所建立目錄 $ sudo mkdir /opt/scala/sbt$ sudo tar zxvf sbt-0.13.5.tgz -C /opt/scala/3、建立啟動sbt的腳本文件/*選定一個位置,建立啟動sbt的腳本文本文件,如/opt/scala/s...
4. linux無網情況下 如何安裝 sbt
1、下載sbt通用平台壓縮包:sbt-0.13.5.tgz
http://www.scala-sbt.org/download.html
2、建立目錄,解壓文件到所建立目錄
$ sudo tar zxvf sbt-0.13.5.tgz -C /opt/scala/
3、建立啟動sbt的腳本文件
/*選定一個位置,建立啟動sbt的腳本文本文件,如/opt/scala/sbt/ 目錄下面新建文件 名為sbt的文本文件*/
$ cd /opt/scala/sbt/
$ vim sbt
/*在sbt文本文件中添加
SBT_OPTS="-Xms512M -Xmx1536M -Xss1M -XX:+CMSClassUnloadingEnabled -XX:MaxPermSize=256M"
java $SBT_OPTS -jar /opt/scala/sbt/bin/sbt-launch.jar "$@"
然後按esc鍵 輸入 :wq 保存退出,注意紅色字體中的路徑是定位到解壓的sbt文件包中的sbt-launch.jar文件的絕對路徑*/
/×修改sbt文件許可權×/
$ chmod u+x sbt
4、配置PATH環境變數,保證在控制台中可以使用sbt命令
$ vim ~/.bashrc
/*在文件尾部添加如下代碼後,保存退出*/
export PATH=/opt/scala/sbt/:$PATH
/*使配置文件立刻生效*/
$ source ~/.bashrc
5、測試sbt是否安裝成功
/*第一次執行時,會下載一些文件包,然後才能正常使用,要確保聯網了,安裝成功後顯示如下*/
$ sbt sbt-version
[info] Set current project to sbt (in build file:/opt/scala/sbt/)
[info] 0.13.5
5. spark為什麼要在linux上運行
老師說要我們學習LINUX,說是要在哪個裡面編程,但是我還是不知道為什麼要在LINUX裡面編呢?聽說LINUX很穩定,是不是這個原因呢?
本文前提已經確安裝scala,sbt及spark 簡述程序掛載集群運行步驟:
1、構建sbt標准項目工程結構:SBT項目工程結構圖其:~/build.sbt文件用配置項目基本信息(項目名、組織名、項目版本、使用scala版本或者再配置些項目所需依賴包);project/build.properties文件配置要使用版本sbt項目操作;project/plugins.sbt文件給項目添加所需插件;project/Build.scala文件項目進行些復雜高級配置;詳細sbt安裝配置實用參見博文:
2、相應目錄編寫程序spark程序必須要創建SparkContext實例SparkContext("master", "projectName", "SPARK_HOME", "yourProject.jar path")
3、sbt compile命令編譯程序錯sbt package命令程序打包默認打包jar文件存放路徑:項目根目錄/target/scala-xx.xx.xx/your-project-name_xx.xx.xx-xx.jar
4、打包jar問價添加SPAK_CLASSPATH(linux根據作用范圍同種更改環境變數式說我配置式:spark根目錄conf/spark-env.sh文件添加SPARK_CLASSPATH:xxxxxxxx)
5、配置環境變數spark根目錄使用./run腳本運行程序例:./run spark.examples.SparkPi spark://masterIP:port注意程序涉及IO操作起默認路徑SPARK_HOME;至於何修改路徑待研究
轉載僅供參考
6. scala maven sbt 哪個
SBT是Simple Build Tool的簡稱,如果讀者使用過Maven,那麼可以簡單將SBT看做是Scala世界的Maven,雖然二者各有優劣,但完成的工作基本是類似的。
雖然Maven同樣可以管理Scala項目的依賴並進行構建, 但SBT的某些特性卻讓人如此著迷,比如:
* 使用Scala作為DSL來定義build文件(one language rules them all);
* 通過觸發執行(trigger execution)特性支持持續的編譯與測試;
* 增量編譯;^[SBT的增量編譯支持因為如此優秀,已經剝離為Zinc,可被Eclipse, Maven,Gradle等使用]
* 可以混合構建Java和Scala項目;
* 並行的任務執行;
* 可以重用Maven或者ivy的repository進行依賴管理;
等等這些,都是SBT得以在Scala的世界裡廣受歡迎的印記。
SBT的發展可以分為兩個階段, 即SBT_0.7.x時代以及SBT_0.10.x以後的時代。
目前來講, SBT_0.7.x已經很少使用, 大部分公司和項目都已經遷移到0.10.x以後的版本上來,最新的是0.12版本。 0.10.x之後的版本build定義採用了新的Settings系統,與最初0.7.x版本採用純Scala代碼來定義build文件大相徑庭,雖然筆者在遷移之前很抵觸(因為0.7.x中採用Scala定義build文件的做法可以體現很好的統一性),但還是升級並接納了0.10.x以後的版本,並且也逐漸意識到, 雖然新的版本初看起來很復雜,但一旦了解了其設計和實現的哲學跟思路,就會明白這種設計可以更便捷的定義build文件。而且可選的build文件方式也同樣運行採用Scala代碼來定義,即並未放棄統一性的思想。
以上是SBT的簡單介紹,如果讀者已經急於開始我們的SBT之旅,那麼讓我們先從SBT的安裝和配置開始吧!
## SBT安裝和配置
SBT的安裝和配置可以採用兩種方式,一種是所有平台都通用的安裝配置方式,另一種是跟平台相關的安裝和配置方式,下面我們分別對兩種方式進行詳細介紹。
### 所有平台通用的安裝配置方式
所有平台通用的安裝和配置方式只需要兩步:
1. 下載sbt boot launcher
- 本書採用最新的sbt0.12,其下載地址為<http://typesafe.artifactoryonline.com/typesafe/ivy-releases/org.scala-sbt/sbt-launch/0.12.0/sbt-launch.jar>;
2. 創建sbt啟動腳本(啟動腳本是平台相關的)
- 如果是Linux/Unit系統,創建名稱為sbt的腳本,並賦予其執行許可權,並將其加到PATH路徑中; sbt腳本內容類似於
``java -Xms512M -Xmx1536M -Xss1M -XX:+CMSClassUnloadingEnabled -XX:MaxPermSize=384M -jar `dirname $0`/sbt-launch.jar "$@"``, 可以根據情況調整合適的java進程啟動參數;
- 如果是Windows系統,則創建sbt.bat命令行腳本,同樣將其添加到PATH路徑中。 腳本內容類似於``set SCRIPT_DIR=%~dp0 \n
java -Xmx512M -jar "%SCRIPT_DIR%sbt-launch.jar" %*``
以上兩步即可完成sbt的安裝和配置。
### 平台相關的安裝配置方式
筆者使用的是Mac系統,安裝sbt只需要執行``brew install sbt``即可(因為我已經安裝有homebrew這個包管理器),使用macport同樣可以很簡單的安裝sbt - ``sudo port install sbt``;
7. sbt編譯時怎麼匹配scala版本
build.sbt中寫入:
scalaVersion := "2.10.5"
就會使用對應的版本的庫進行編譯
8. linux下 IDEA SBT project import有問題 怎麼解決
盜版也沒事的。 外面買個系統盤吧,裝著很簡單的。如果你害怕,你就裝雙系統。
分區助手分出50G 然後把64位WIN7裝那個新分出來的區里,簡單死了。
9. cassandra在pom.xml裡面怎麼設置library
1.執行代碼//CassandraTest.scalaimportorg.apache.spark.{Logging,SparkContext,SparkConf}importcom.datastax.spark.connector.cql.{defmain(args:Array[String]){#配置spark,cassandra的ip,這里都是本機valSparkMasterHost="127.0.0.1"valCassandraHost="127.0.0.1"//:valconf=newSparkConf(true).set("spark.cassandra.connection.host",CassandraHost).set("spark.cleaner.ttl","3600").setMaster("local[12]").setAppName("CassandraTestApp")//ConnecttotheSparkcluster:lazyvalsc=newSparkContext(conf)//預處理腳本,連接的時候就執行這些CassandraConnector(conf).withSessionDo{session=>session.execute("={'class':'SimpleStrategy','replication_factor':1}")session.execute("CREATETABLEIFNOTEXISTStest.key_value(keyINTPRIMARYKEY,valueVARCHAR)")session.execute("TRUNCATEtest.key_value")session.execute("INSERTINTOtest.key_value(key,value)VALUES(1,'firstrow')")session.execute("INSERTINTOtest.key_value(key,value)VALUES(2,'secondrow')")session.execute("INSERTINTOtest.key_value(key,value)VALUES(3,'thirdrow')")}//載入connectorimportcom.datastax.spark.connector._//Readtabletest.kvandprintitscontents:valrdd=sc.cassandraTable("test","key_value").select("key","value")rdd.collect().foreach(row=>println(s"ExistingData:$row"))//Writetwonewrowstothetest.kvtable:valcol=sc.parallelize(Seq((4,"fourthrow"),(5,"fifthrow")))col.saveToCassandra("test","key_value",SomeColumns("key","value"))//.kvtable:assert(col.collect().length==2)col.collect().foreach(row=>println(s"NewData:$row"))println(s"Workcompleted,stoppingtheSparkcontext.")sc.stop()}}2.目錄結構由於構建工具是用sbt,所以目錄結構也必須遵循sbt規范,主要是build.sbt和src目錄,其它目錄會自動生成。qpzhang@qpzhangdeMac-mini:~/scala_code/CassandraTest$lltotal8drwxr-xr-x6qpzhangstaff204112612:14./drwxr-xr-x10qpzhangstaff340112517:30../-rw-r--r--1qpzhangstaff460112610:11build.sbtdrwxr-xr-x3qpzhangstaff102112517:42project/drwxr-xr-x3qpzhangstaff102112517:32src/drwxr-xr-x6qpzhangstaff204112517:55target/qpzhang@qpzhangdeMac-mini:~/scala_code/CassandraTest$treesrc/src/└──main└──scala└──CassandraTest.scalaqpzhang@qpzhangdeMac-mini:~/scala_code/CassandraTest$catbuild.sbtname:="CassandraTest"version:="1.0"scalaVersion:="2.10.4"libraryDependencies+="org.apache.spark"%%"spark-core"%"1.5.2"%"provided"libraryDependencies+="com.datastax.spark"%%"spark-cassandra-connector"%"1.5.0-M2":={casePathList(ps@_*)ifps.lastendsWith".properties"=>MergeStrategy.firstcasex=>valoldStrategy=().valueoldStrategy(x)}這里需要注意的是,sbt安裝的是當時最新版本0.13,並且安裝了assembly插件(這里要吐槽一下sbt,下載一坨坨的jar包,最好有FQ代理,否則下載等待時間很長)。qpzhang@qpzhangdeMac-mini:~/scala_code/CassandraTest$cat~/.sbt/0.13/plugins/plugins.sbtaddSbtPlugin("com.typesafe.sbteclipse"%"sbteclipse-plugin"%"2.5.0")addSbtPlugin("com.eed3si9n"%"sbt-assembly"%"0.14.1")3.sbt編譯打包在build.sbt目錄下,使用sbt命令啟動。然後使用compile命令進行編譯,使用assembly進行打包。在次期間,遇到了sbt-assembly-deplicate-error的問題,參考這里。>compile[success]Totaltime:0s,completed2015-11-2610:11:50>>assembly[info]Includingfromcache:slf4j-api-1.7.5.jar[info]Includingfromcache:metrics-core-3.0.2.jar[info]Includingfromcache:netty-codec-4.0.27.Final.jar[info]Includingfromcache:netty-handler-4.0.27.Final.jar[info]Includingfromcache:netty-common-4.0.27.Final.jar[info]Includingfromcache:joda-time-2.3.jar[info]Includingfromcache:netty-buffer-4.0.27.Final.jar[info]Includingfromcache:commons-lang3-3.3.2.jar[info]Includingfromcache:jsr166e-1.1.0.jar[info]Includingfromcache:cassandra-clientutil-2.1.5.jar[info]Includingfromcache:joda-convert-1.2.jar[info]Includingfromcache:netty-transport-4.0.27.Final.jar[info]Includingfromcache:guava-16.0.1.jar[info]Includingfromcache:spark-cassandra-connector_2.10-1.5.0-M2.jar[info]Includingfromcache:cassandra-driver-core-2.2.0-rc3.jar[info]Includingfromcache:scala-reflect-2.10.5.jar[info]Includingfromcache:scala-library-2.10.5.jar[info]Checkingevery*.class/*.jarfile'sSHA-1.[info]Mergingfiles[warn]Merging'META-INF/INDEX.LIST'withstrategy'discard'[warn]Merging'META-INF/MANIFEST.MF'withstrategy'discard'[warn]Merging'META-INF/io.netty.versions.properties'withstrategy'first'[warn]Merging'META-INF/maven/com.codahale.metrics/metrics-core/pom.xml'withstrategy'discard'[warn]Merging'META-INF/maven/com.datastax.cassandra/cassandra-driver-core/pom.xml'withstrategy'discard'[warn]Merging'META-INF/maven/com.google.guava/guava/pom.xml'withstrategy'discard'[warn]Merging'META-INF/maven/com.twitter/jsr166e/pom.xml'withstrategy'discard'[warn]Merging'META-INF/maven/io.netty/netty-buffer/pom.xml'withstrategy'discard'[warn]Merging'META-INF/maven/io.netty/netty-codec/pom.xml'withstrategy'discard'[warn]Merging'META-INF/maven/io.netty/netty-common/pom.xml'withstrategy'discard'[warn]Merging'META-INF/maven/io.netty/netty-handler/pom.xml'withstrategy'discard'[warn]Merging'META-INF/maven/io.netty/netty-transport/pom.xml'withstrategy'discard'[warn]Merging'META-INF/maven/joda-time/joda-time/pom.xml'withstrategy'discard'[warn]Merging'META-INF/maven/org.apache.commons/commons-lang3/pom.xml'withstrategy'discard'[warn]Merging'META-INF/maven/org.joda/joda-convert/pom.xml'withstrategy'discard'[warn]Merging'META-INF/maven/org.slf4j/slf4j-api/pom.xml'withstrategy'discard'[warn]Strategy'discard'wasappliedto15files[warn]Strategy'first'wasappliedtoafile[info]SHA-1:[info]Packaging/Users/qpzhang/scala_code/CassandraTest/target/scala-2.10/CassandraTest-assembly-1.0.jar[info]Donepackaging.[success]Totaltime:19s,completed2015-11-2610:12:224.提交到spark,執行結果qpzhang@qpzhangdeMac-mini:~/project/spark-1.5.2-bin-hadoop2.6$./bin/spark-submit--class"CassandraTestApp"--masterlocal[4]~/scala_code/CassandraTest/target/scala-2.10/CassandraTest-assembly-1.0.jar//5/11/2611:40:23INFOTaskSetManager:Startingtask0.0instage0.0(TID0,localhost,NODE_LOCAL,26660bytes)15/11/2611:40:23INFOExecutor:Runningtask0.0instage0.0(TID0)15/11/2611:40:23INFOExecutor:Fetchinghttp://10.60.215.42:57683/jars/CassandraTest-assembly-1.0./11/2611:40:23INFOCassandraConnector::TestCluster15/11/2611:40:23INFOUtils:Fetchinghttp://10.60.215.42:57683/jars/CassandraTest-assembly-1.0.jarto/private/var/folders/2l//T/spark-4030cadf-8489-4540-976e-e98eedf50412/userFiles-63085bda-aa04-4906-9621-c1cedd98c163/.tmp15/11/2611:40:23INFOExecutor:Addingfile:/private/var/folders/2l//T/spark-4030cadf-8489-4540-976e-e98eedf50412/userFiles-63085bda-aa04-4906-9621-c1cedd98c163/CassandraTest-assembly-1.0.jartoclassloader15/11/2611:40:24INFOCluster:NewCassandrahostlocalhost/127.0.0.1:9042added15/11/2611:40:24INFOCassandraConnector:ConnectedtoCassandracluster:TestCluster15/11/2611:40:25INFOExecutor:Finishedtask0.0instage0.0(TID0).2676bytesresultsenttodriver15/11/2611:40:25INFOTaskSetManager:Finishedtask0.0instage0.0(TID0)in2462msonlocalhost(1/1)15/11/2611:40:25INFOTaskSchelerImpl:RemovedTaskSet0.0,whosetaskshaveallcompleted,frompool15/11/2611:40:25INFODAGScheler:ResultStage0(collectatCassandraTest.scala:32)finishedin2.481s15/11/2611:40:25INFODAGScheler:Job0finished:collectatCassandraTest.scala:32,took2.940601sExistingData:CassandraRow{key:1,value:firstrow}ExistingData:CassandraRow{key:2,value:secondrow}ExistingData:CassandraRow{key:3,value:thirdrow}//..5/11/2611:40:27INFOTaskSchelerImpl:RemovedTaskSet3.0,whosetaskshaveallcompleted,frompool15/11/2611:40:27INFODAGScheler:ResultStage3(collectatCassandraTest.scala:41)finishedin0.032s15/11/2611:40:27INFODAGScheler:Job3finished:collectatCassandraTest.scala:41,took0.046502sNewData:(4,fourthrow)NewData:(5,fifthrow)Workcompleted,stoppingtheSparkcontext.cassandra中的數據cqlsh:test>select*fromkey_value;key|value-----+------------5|fifthrow1|firstrow2|secondrow4|fourthrow3|thirdrow(5rows)到此位置,還算順利,除了assembly重復文件的問題,都還算ok。
10. Linux裡面spark作用是什麼
Spark是通用數據處理引擎,適用於多種情況。 應用程序開發人員和數據科學家將Spark集成到他們的應用程序中,以快速地大規模查詢,分析和轉換數據。 與Spark最頻繁相關的任務包括跨大型數據集的互動式查詢,來自感測器或金融系統的流數據處理以及機器學習任務。
Spark於2009年開始運作,最初是加州大學伯克利分校AMPLab內部的一個項目。 更具體地說,它是出於證明Mesos概念的需要而誕生的,Mesos概念也是在AMPLab中創建的。 在Mesos白皮書《 Mesos:數據中心中的細粒度資源共享平台》中首次討論了Spark,其中最著名的作者是Benjamin Hindman和Matei Zaharia。
2013年,Spark成為Apache Software Foundation的孵化項目,並於2014年初被提升為該基金會的頂級項目之一。 Spark是基金會管理的最活躍的項目之一,圍繞該項目成長的社區包括多產的個人貢獻者和資金雄厚的企業支持者,例如Databricks,IBM和中國的華為。
從一開始,Spark就被優化為在內存中運行。 它比Hadoop的MapRece等替代方法更快地處理數據,後者傾向於在處理的每個階段之間向計算機硬碟寫入數據或從計算機硬碟寫入數據。 Spark的支持者聲稱,Spark在內存中的運行速度可以比Hadoop MapRece快100倍,並且在以類似於Hadoop MapRece本身的方式處理基於磁碟的數據時也可以快10倍。 這種比較並不完全公平,這不僅是因為原始速度對Spark的典型用例而言比對批處理更為重要,在這種情況下,類似於MapRece的解決方案仍然很出色。