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