① 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。
② linux中用idea如何安裝Hadoop jar包
(1)准備工作
1) 安裝JDK 6或者JDK 7
2) 安裝scala 2.10.x (注意版本)
2)下載Intellij IDEA最新版(本文以IntelliJ IDEA Community Edition 13.1.1為例說明,不同版本,界面布局可能不同):
3)將下載的Intellij IDEA解壓後,安裝scala插件,流程如下:
依次選擇「Configure」–> 「Plugins」–> 「Browse repositories」,輸入scala,然後安裝即可
(2)搭建Spark源碼閱讀環境(需要聯網)
一種方法是直接依次選擇「import project」–> 選擇spark所在目錄 –> 「SBT」,之後intellij會自動識別SBT文件,並下載依賴的外部jar包,整個流程用時非常長,取決於機器的網路環境(不建議在windows下操作,可能遇到各種問題),一般需花費幾十分鍾到幾個小時。注意,下載過程會用到git,因此應該事先安裝了git。
第二種方法是首先在linux操作系統上生成intellij項目文件,然後在intellij IDEA中直接通過「Open Project」打開項目即可。在linux上生成intellij項目文件的方法(需要安裝git,不需要安裝scala,sbt會自動下載)是:在spark源代碼根目錄下,輸入sbt/sbt gen-idea
註:如果你在windows下閱讀源代碼,建議先在linux下生成項目文件,然後導入到windows中的intellij IDEA中。
③ linux無網情況下 如何安裝 sbt
一、下載sbt安裝包
從sbt官網下載地址:http://www.scala-sbt.org/download.html下載安裝包,以sbt-0.13.13.tgz為例。
二、安裝
1、將下載的二進制包移動到/usr/local目錄,解壓縮文件包
tar zxvf sbt-0.13.13.tgz
mv sbt-launcher-packaging-0.13.13 sbt //重命名目錄
2、創建啟動sbt的腳本文件
cd /usr/local/sbt/
vi sbt
在打開的sbt文本文件中添加
#!/bin/bash
SBT_OPTS="-Xms512M -Xmx1536M -Xss1M -XX:+CMSClassUnloadingEnabled -XX:MaxPermSize=256M"
java $SBT_OPTS -jar /usr/local/sbt/bin/sbt-launch.jar "$@"
然後按Esc鍵 輸入 :wq 保存退出,注意紅色字體中的路徑是定位到解壓的sbt文件包中的sbt-launch.jar文件的絕對路徑
3、修改sbt腳本文件許可權
chmod u+x sbt
4、配置PATH環境變數
可以選擇配置~/.bashrc 或 /etc/profile,此處以配置 /etc/profile 為例
vi /etc/profile
在文件尾部添加如下代碼後,保存退出
export PATH=/usr/local/sbt/:$PATH
使配置文件立刻生效
source /etc/profile
三、測試sbt是否安裝成功
第一次執行時,會下載一些文件包,然後才能正常使用,要確保聯網了
sbt sbt-version
④ 12-linux下sbt的安裝和使用
sbt類似於maven,是一個強大的項目管理和依賴管理工具。本文將闡述如何在linux中安裝sbt。
至此,我們完成了在linux中sbt的安裝。
⑤ 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的解決方案仍然很出色。
⑥ 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
⑦ 使用scala 必須安裝sbt嗎
不需要。sbt是一個構建工具,而Scala可以直接從官網上下載到開發工具包
⑧ 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``;