導航:首頁 > 源碼編譯 > sbt打包文件未編譯

sbt打包文件未編譯

發布時間:2023-03-20 09:24:04

⑴ 如何使用sbt打包scala程序

創建工程目錄
在工程目錄下面建立build.sbt
放讓衫正入源碼

構建 :坦悔 sbt build
運行 : sbt run
運行測試 :塌帶 sbt test
清理 : sbt clean

⑵ sbt文件用什麼打開

文件擴展名.SBT
文件類型:SBT字幕文件
類別:視頻文件
軟體:可打開SBT文件的軟體:
URUWorks
Subtitle
Workshop,
Superbase
Classic,
Superbase
Scientific,
Superbase
SB
Next
Generation
Workbench.
描述:
保存在SBT格式的字幕文件,包含定義棚謹時,應顯示每個字幕和字幕文本和定時信息多長時間;通常保陸源存與相應的視頻文早和態件。
注意:大部分的字幕文件保存在SUB

SSA

SRT或格式。

⑶ 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的解決方案仍然很出色。

⑷ springboot 使用scala 開發

咋說呢 ,還是使用scala做springboot開發比較流暢一些
按道理來說根據打包模式 maven sbt gradle來說三種方式都可以
maven 是最簡單的
gradle 也比較簡單,但是我並沒有嘗試gradle
sbt 其實也還可以 ,你要找到方向基本就直到套路了,經過參考別人的博客,自己搭建了個demo 驗證是可以正常使用的,不過maven 版的打jar 使用還是有點問題,我嘗試使用多種方式指定主函數還是有問題
兩種方式的我都上傳到了github上,大家如果想模仿學習 可以git clone 下來泡一泡
https://github.com/mullerhai/scala-springboot-sbt
https://github.com/mullerhai/springboot-scala-maven

另外搭建邏輯 大家可以參考這篇博客 google搜出來的
https://afoo.me/posts/2015-07-21-scala-developers-springboot-guide.html

需要主要的,現在的springboot 的版本是2.0.5 release ,之前都是1.× ,不過大同小異,

springboot 本身是支持 java 8 kotlin groovy,大家也可以嘗試一下 kotlin ,kotlin 以後可能會崛起

說一下打包部署伍租
正常來說我們做java 都會打個jar包 部署到生產環境上,
springboot 據說他打包的文件生成方式和普通的 是有差別的,確實,我點擊jar 解壓看到的和普通有很大差別,所以才會有一個 springboot-maven-plugin
有了這個插件所以 springboot部署成jar包比較簡單
但是吧 springboot對sbt 沒有特殊支持 也沒有這個插件,我耗費三體還是沒有實現主就是報這個錯

那我們說 springboot sbt scala 部署到底如何實現呢
其實在不打jar 包的情況下還是有多種實現的,比如 git 整個項目到生產環境,直接sbt run 就可以啟動整個項目
,另外還要說一下,springboot如果不啟動web ,比如做定時任務,使用sbt-assembly插件 其實打成jar包也是可以使嫌橘余用的
還有一種就是是使用sbt-native-package插件,這個插件超級強大,簡芹滾直可以用震驚!!!,他娘的,什麼都可以打包,就是打不成jar包,rpm docker image zip tar.gz
macos dmg win exe,這些他都可以

參考
https://stackoverflow.com/questions/45410630/spring-boot-how-can-i-build-a-runnable-jar-with-sbt

I solved the issue by moving to sbt-native-packager

plugins.sbt
addSbtPlugin("com.typesafe.sbt" % "sbt-native-packager" % "1.2.0")
build.sbt
scriptClasspath := Seq("*")
mainClass in Compile := Some("com.x.app.XETL")
enablePlugins(JavaAppPackaging)
Running:
packaging sbt universal:stage
starting the app: target\universal\stage\bin\x.bat

這個會生產一個腳本,直接執行這個腳本就可以,不過有時候也會失敗,這個需要在

對於 maven scala springboot 項目來說,要想打成jar包運行,必須包含其中的兩個maven 插件,缺一個也不行

完整的

在 IDEA 裡面新建 SpringBoot 啟動配置,運行後啟動成功。
在 POM 目錄 執行 mvn spring-boot:run 運行項目,啟動成功;
線下環境 通過 java -jar jar_name.jar,運行成功;

https://stackoverflow.com/questions/38792031/springboot-making-jar-files-no-auto-configuration-classes-found-in-meta-inf

https://stackoverflow.com/questions/38792031/springboot-making-jar-files-no-auto-configuration-classes-found-in-meta-inf

用下面命令重新打包試試看

mvn clean package spring-boot:repackage -Dmaven.test.skip

在sbt 中
這兩個是罪魁禍首

一引用就出問題

⑸ 如何配置sbt的build.sbt使得編譯時將依賴包也打包進去

我不知道從您的問題您是否0.7.x或0.10.x,但這里的0.10.x答案把下面的逗棗歷你~/.sbt/plugins/build.sbt文件resolvers+={valtypesafeRepoUrl=newjava.net.URL("CodeGo.netvalpattern=Patterns(false,"[organisation]/[mole]/[sbtversion]/[revision]/[type]s/[mole](-[classifier])-[revision].[ext]")Resolver.url("岩埋TypesafeRepository",typesafeRepoUrl)(pattern)}libraryDependenciesdeps:+("com.typesafe.sbteclipse"%%"sbteclipse"%"1.1"extra("山搜sbtversion"->version))}

⑹ 如何配置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(合並策略)

⑺ Datastream 開發打包問題

Datastream作業開發時往往會遇到一些jar包沖突等問題,本文主要講解作業開發時需要引入哪些依賴以及哪些需要被打包進作業的jar中,從而避免不必要的依賴被打入了作業jar中以及可能產生的依賴沖突。

一個Datastream作業主要涉及下述依賴:

每一個Flink應用程序都依賴於一系列相關的庫,其中至少應該包括Flink的API. 許多應用程序還依賴於連接器相關的庫(如 Kafka, Cassandra等).在運行Flink應用程序時,無論是在運行在分布式的環境下還是在本地IDE進行測試,Flink的運行時相關依賴都是必須的。

與大多數運行用戶自定義應用程序的系統一樣,Flink 中有兩大類依賴項:

每一個Flink應用程序的開發至少需要添加對相關API的基礎依賴。

手動配置項目時,需要添加對Java/Scala API的依賴(這里以Maven為例,薯逗在數虧賣其他構建工具(Gradle,SBT等)中可以使用同樣的依賴)。

重要提示 :請注意,所有這些依賴項都將其范圍設置為"provided"。這意味著需要對它們進行編譯,但不應將它們打包到項目生成的應用程序jar文件中——這些依賴項是Flink核心依賴項,在實際運行時已經被載入。

強烈建議將依賴項設置成"provided"的范圍,如果未將它們設置為"provided",最好的情況下會導致生成的jar變得臃腫,因為它還包含所有Flink核心依賴項。而最懷的情況下,添加到應用程序jar文件中的Flink核心依賴項與您自己的一些依賴項會發生版本沖突(通常通過Flink的反向類載入機制來避免)。

關於IntelliJ的注意事項 :為了使應用程序在IntelliJ IDEA中運行,有必要在運行配置中勾選"Include dependencies with "Provided" scope"選項框。如果沒有該選項(可能是由於使用空念較舊的IntelliJ IDEA版本),那麼一個簡單的解決方法是創建一個調用應用程序 main() 方法的測試用例。

大多數應用程序的運行需要特定的連接器或庫,例如Kafka、Cassandra等連接器。這些連接器不是Flink核心依賴項的一部分,必須作為額外依賴項添加到應用程序中。

下述代碼是添加Kafka連接器依賴項的示例(Maven語法):

我們建議將應用程序代碼和它所有的依賴以 jar-with-dependencies 的形式打包到一個 application jar中。 這個應用程序jar包可以被提交到已經存在的Flink集群上去,或者被加入到Flink應用程序的容器鏡像中去。

從Maven作業模版(見下文Maven作業模版部分)創建的項目,通過mvn clean package命令會自動把依賴打到應用程序的jar包中去。對於沒有使用模版進行配置的情況,建議使用Maven Shade Plugin (配置如附錄所示) 來構建包含依賴的jar包。

重要提示 :對於Maven(和其他構建工具)來說,要將依賴項正確打包到應用程序jar中,這些應用程序依賴項的scope必須指定為"compile"(與核心依賴項不同,核心依賴項的scope必須指定為"provided")。

Scala的不同版本(2.11,2.12等)相互之間是不兼容的。因此,Scala 2.11對應的Flink版本不能用於使用Scala 2.12的應用程序。

所有依賴(或傳遞依賴)於Scala的Flink依賴項都以構建它們的Scala版本作為後綴,例如flink-streaming-scala_2.11。

只使用Java進行開發時可以選擇任何Scala版本,使用Scala開發時需要選擇與其應用程序的Scala版本匹配的Flink依賴版本。

:2.12.8之後的Scala版本與之前的2.12.x版本不兼容,因此Flink項目無法將其2.12.x版本升級到2.12.8之後的版本。用戶可以在本地自己編譯對應Scala版本的Flink。為了使其能夠正常工作,需要添加-Djapicmp.skip以在構建時跳過二進制兼容性檢查。

一般的規則: 永遠不要將Hadoop相關依賴直接添加到應用程序中. (唯一的例外是將現有的Hadoop輸入/輸出Format與Flink的Hadoop兼容包一起使用時)

如果希望將Flink與Hadoop結合使用,則需要包含Hadoop依賴的Flink啟動項,而不是將Hadoop添加為應用程序依賴項。Flink將使用HADOOP_CLASSPATH環境變數指定的Hadoop依賴項,可通過以下方式進行設置:

export HADOOP_CLASSPATH**=**hadoop classpath``

這種設計有兩個主要原因:

如果在IDE內部的測試或開發過程中需要Hadoop依賴項(例如HDFS訪問),請將這些依賴項的scope配置為

test 或則 provided

Flink使用Java的Service Provider Interfaces (SPI) 機制通過特定標識符載入table的connector/format工廠。由於每個table的connector/format的名為org.apache.flink.table.factories.Factory的SPI資源文件位於同一目錄:META-INF/services下,因此在構建使用多個table connector/format的項目的uber jar時,這些資源文件將相互覆蓋,這將導致Flink無法正確載入工廠類。

在這種情況下,推薦的方法是通過maven shade插件的ServicesResourceTransformer轉換META-INF/services目錄下的這些資源文件。給定示例的pom.xml文件內容如下,其中包含連接器flink-sql-connector-hive-3.1.2和flink-parquet format。

在配置了ServicesResourceTransformer之後, 項目構建uber-jar時,META-INF/services目錄下的這些資源文件會被整合在一起而不是相互覆蓋。

強烈建議使用該方式進行配置,可以減少很多重復的配置工作。

唯一的環境要求是安裝了Maven 3.0.4(或更高版本)和Java 8.x。

使用以下兩種方式中的一種創建項目 :

這允許您命名新創建的項目。它將以交互方式要求您輸入groupId、artifactId和包名。

我們建議您將此項目導入IDE以開發和測試它。IntelliJ IDEA原生支持Maven項目。如果使用Eclipse,可以使用m2e插件導入Maven項目。默認情況下,某些Eclipse捆綁包包含該插件,否則需要您手動安裝。

請注意 :默認的Java JVM heap size對於Flink來說可能太小了。你必須手動增加它。在Eclipse中,選擇RunConfigurations->Arguments並寫入VM Arguments框:-Xmx800m。在IntelliJ IDEA中,更改JVM選項的推薦方法是使用Help | Edit Custom VM Options選項菜單。細節見這篇文章.

如果要生成/打包項目,請轉到項目目錄並運行"mvn clean package"命令。執行後將會得到一個JAR文件:target/-.jar,其中包含您的應用程序,以及作為依賴項添加到應用程序的連接器和庫。

注意 :如果使用與StreamingJob不同的類作為應用程序的主類/入口點,我們建議您相應地更改pom.xml文件中的mainClass設置。這樣,Flink就可以直接從JAR文件運行應用程序,而無需另外指定主類。

要構建包含連接器和庫所需的所有依賴項的應用程序JAR,可以使用以下shade插件定義:

原文鏈接:301 Moved Permanently

⑻ apache kafka源碼怎麼編譯

Kafka is a distributed, partitioned, replicated commit log service. It provides the functionality of a messaging system, but with a unique design.(Kafka是一個分布式的、可分區的(partitioned)、基於備份的(replicated)和commit-log存儲的服務.。它提供了類似於messaging system的特性,但是在設計實現上完全不同)。kafka是一種高吞吐量的分布式發布訂閱消息系統,它有如下特性:
(1)、通過O(1)的磁碟數據結構提供消息的持久化,這種結構對於即使數以TB的消息存儲也能夠保持長時間的穩定性能。
(2)、高吞吐量:即使是非常普通的硬體kafka也可以支持每秒數十萬的消息。
(3)、支持通過kafka伺服器和消費機集群來分區消息。
(4)、支持Hadoop並行數據載入。
一、用Kafka裡面自帶的腳本進行編譯
下載好了Kafka源碼,裡面自帶了一個gradlew的腳本,我們可以利用這個編譯Kafka源碼:
1 # wget http://mirror.bit.e.cn/apache/kafka/0.8.1.1/kafka-0.8.1.1-src.tgz
2 # tar -zxf kafka-0.8.1.1-src.tgz
3 # cd kafka-0.8.1.1-src
4 # ./gradlew releaseTarGz
運行上面的命令進行編譯將會出現以下的異常信息:
01 :core:signArchives FAILED
02
03 FAILURE: Build failed with an exception.
04
05 * What went wrong:
06 Execution failed for task ':core:signArchives'.
07 > Cannot perform signing task ':core:signArchives' because it
08 has no configured signatory
09
10 * Try:
11 Run with --stacktrace option to get the stack trace. Run with
12 --info or --debug option to get more log output.
13
14 BUILD FAILED
這是一個bug(https://issues.apache.org/jira/browse/KAFKA-1297),可以用下面的命令進行編譯
1 ./gradlew releaseTarGzAll -x signArchives
這時候將會編譯成功(在編譯的過程中將會出現很多的)。在編譯的過程中,我們也可以指定對應的Scala版本進行編譯:
1 ./gradlew -PscalaVersion=2.10.3 releaseTarGz -x signArchives
編譯完之後將會在core/build/distributions/裡面生成kafka_2.10-0.8.1.1.tgz文件,這個和從網上下載的一樣,可以直接用。
二、利用sbt進行編譯
我們同樣可以用sbt來編譯Kafka,步驟如下:
01 # git clone https://git-wip-us.apache.org/repos/asf/kafka.git
02 # cd kafka
03 # git checkout -b 0.8 remotes/origin/0.8
04 # ./sbt update
05 [info] [SUCCESSFUL ] org.eclipse.jdt#core;3.1.1!core.jar (2243ms)
06 [info] downloading http://repo1.maven.org/maven2/ant/ant/1.6.5/ant-1.6.5.jar ...
07 [info] [SUCCESSFUL ] ant#ant;1.6.5!ant.jar (1150ms)
08 [info] Done updating.
09 [info] Resolving org.apache.hadoop#hadoop-core;0.20.2 ...
10 [info] Done updating.
11 [info] Resolving com.yammer.metrics#metrics-annotation;2.2.0 ...
12 [info] Done updating.
13 [info] Resolving com.yammer.metrics#metrics-annotation;2.2.0 ...
14 [info] Done updating.
15 [success] Total time: 168 s, completed Jun 18, 2014 6:51:38 PM
16
17 # ./sbt package
18 [info] Set current project to Kafka (in build file:/export1/spark/kafka/)
19 Getting Scala 2.8.0 ...
20 :: retrieving :: org.scala-sbt#boot-scala
21 confs: [default]
22 3 artifacts copied, 0 already retrieved (14544kB/27ms)
23 [success] Total time: 1 s, completed Jun 18, 2014 6:52:37 PM
對於Kafka 0.8及以上版本還需要運行以下的命令:
01 # ./sbt assembly-package-dependency
02 [info] Loading project definition from /export1/spark/kafka/project
03 [warn] Multiple resolvers having different access mechanism configured with
04 same name 'sbt-plugin-releases'. To avoid conflict, Remove plicate project
05 resolvers (`resolvers`) or rename publishing resolver (`publishTo`).
06 [info] Set current project to Kafka (in build file:/export1/spark/kafka/)
07 [warn] Credentials file /home/wyp/.m2/.credentials does not exist
08 [info] Including slf4j-api-1.7.2.jar
09 [info] Including metrics-annotation-2.2.0.jar
10 [info] Including scala-compiler.jar
11 [info] Including scala-library.jar
12 [info] Including slf4j-simple-1.6.4.jar
13 [info] Including metrics-core-2.2.0.jar
14 [info] Including snappy-java-1.0.4.1.jar
15 [info] Including zookeeper-3.3.4.jar
16 [info] Including log4j-1.2.15.jar
17 [info] Including zkclient-0.3.jar
18 [info] Including jopt-simple-3.2.jar
19 [warn] Merging 'META-INF/NOTICE' with strategy 'rename'
20 [warn] Merging 'org/xerial/snappy/native/README' with strategy 'rename'
21 [warn] Merging 'META-INF/maven/org.xerial.snappy/snappy-java/LICENSE'
22 with strategy 'rename'
23 [warn] Merging 'LICENSE.txt' with strategy 'rename'
24 [warn] Merging 'META-INF/LICENSE' with strategy 'rename'
25 [warn] Merging 'META-INF/MANIFEST.MF' with strategy 'discard'
26 [warn] Strategy 'discard' was applied to a file
27 [warn] Strategy 'rename' was applied to 5 files
28 [success] Total time: 3 s, completed Jun 18, 2014 6:53:41 PM
當然,我們也可以在sbt裡面指定scala的版本:
01 <!--
02 User: 過往記憶
03 Date: 14-6-18
04 Time: 20:20
05 bolg: http://www.iteblog.com
06 本文地址:http://www.iteblog.com/archives/1044
07 過往記憶博客,專注於hadoop、hive、spark、shark、flume的技術博客,大量的干貨
08 過往記憶博客微信公共帳號:iteblog_hadoop
09 -->
10 sbt "++2.10.3 update"
11 sbt "++2.10.3 package"
12 sbt "++2.10.3 assembly-package-dependency"

⑼ scala程序怎麼形成jar包 sbt

一、編寫第一個用scala寫的spark應用:
仿照spark的 quick-start的Self-Contained Applications寫出第一個scala完整程序
鏈接如下:

即:
/* SimpleApp.scala */import org.apache.spark.SparkContextimport org.apache.spark.SparkContext._import org.apache.spark.SparkConfobject SimpleApp {
def main(args: Array[String]) {
val logFile = "YOUR_SPARK_HOME/README.md" // Should be some file on your system
val conf = new SparkConf().setAppName("Simple Application")
val sc = new SparkContext(conf)
val logData = sc.textFile(logFile, 2).cache()
val numAs = logData.filter(line => line.contains("a")).count()
val numBs = logData.filter(line => line.contains("b")).count()
println("Lines with a: %s, Lines with b: %s".format(numAs, numBs))
}}

整個程序作用是:找到這個文件
YOUR_SPARK_HOME/README.md

中有幾個a和幾個b。
二、用sbt進行打包成jar:
命令:sbt package
具體步驟見

中的Self-Contained Applications
打包時候幾點注意:
1、
目錄結構一定要對
目錄結構可以通過find .來看
有點類似cmake的感覺
2、
總時間,近30分鍾,開始打開會terminal沒現象10分鍾,然後開始要各種resolve,之後要下載很多庫,我這邊網速超慢
sbt是個聯網編譯器,
Spark的應用用到了很多RDD的變換,來編譯這些庫都得去網上下相應的包
最後顯示,編譯時間11s
這時成功完成SimpleApp
三、在本機上測試:
命令為:
YOUR_SPARK_HOME/bin/spark-submit \
--class "SimpleApp" \
--master local[4] \
target/scala-2.10/simple-project_2.10-1.0.jar

我對jar的理解就是一個可執行文件了,這個可執行文件在JVM上就可以跑了,local中4是指設置成4個線程,但具體原因我也不知道
注意submit的參數:
--class中 SimpleApp是包名
上傳的的jar的地址別寫錯
一、編寫第一個用scala寫的spark應用:
仿照spark的 quick-start的Self-Contained Applications寫出第一個scala完整程序
鏈接如下:

即:
/* SimpleApp.scala */import org.apache.spark.SparkContextimport org.apache.spark.SparkContext._import org.apache.spark.SparkConfobject SimpleApp {
def main(args: Array[String]) {
val logFile = "YOUR_SPARK_HOME/README.md" // Should be some file on your system
val conf = new SparkConf().setAppName("Simple Application")
val sc = new SparkContext(conf)
val logData = sc.textFile(logFile, 2).cache()
val numAs = logData.filter(line => line.contains("a")).count()
val numBs = logData.filter(line => line.contains("b")).count()
println("Lines with a: %s, Lines with b: %s".format(numAs, numBs))
}}

整個程序作用是:找到這個文件
YOUR_SPARK_HOME/README.md

中有幾個a和幾個b。
二、用sbt進行打包成jar:
命令:sbt package
具體步驟見

中的Self-Contained Applications
打包時候幾點注意:
1、
目錄結構一定要對
目錄結構可以通過find .來看
有點類似cmake的感覺
2、
總時間,近30分鍾,開始打開會terminal沒現象10分鍾,然後開始要各種resolve,之後要下載很多庫,我這邊網速超慢
sbt是個聯網編譯器,
Spark的應用用到了很多RDD的變換,來編譯這些庫都得去網上下相應的包
最後顯示,編譯時間11s
這時成功完成SimpleApp
三、在本機上測試:
命令為:
YOUR_SPARK_HOME/bin/spark-submit \
--class "SimpleApp" \
--master local[4] \
target/scala-2.10/simple-project_2.10-1.0.jar

我對jar的理解就是一個可執行文件了,這個可執行文件在JVM上就可以跑了,local中4是指設置成4個線程,但具體原因我也不知道
注意submit的參數:
--class中 SimpleApp是包名
上傳的的jar的地址別寫錯
閱讀全文

⑽ 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。

閱讀全文

與sbt打包文件未編譯相關的資料

熱點內容
安卓怎麼弄成蘋果在線 瀏覽:431
谷歌web伺服器地址 瀏覽:898
安卓鎖屏圖片如何刪除 瀏覽:719
python3多進程編程 瀏覽:713
證明代碼是程序員寫的 瀏覽:396
演算法錯誤發現辦法 瀏覽:409
河南省醫院掛號是哪個app 瀏覽:629
冬日戀歌哪個APP能看 瀏覽:673
委內瑞拉加密貨 瀏覽:10
程序員寫日記哪個軟體好 瀏覽:108
加密機操作手冊 瀏覽:860
dos命令自動關閉 瀏覽:328
心田花開app在哪裡評價 瀏覽:449
求索記錄頻道哪個app可以看 瀏覽:730
金梅瓶pdf下載 瀏覽:985
機器軟體用什麼編程 瀏覽:845
java虛擬機指令 瀏覽:671
shell編程入門書籍 瀏覽:946
大連桶裝水溯源碼售價 瀏覽:302
php怎麼跳轉到電腦 瀏覽:415