scala 101
* scala 安装:
下载可以执行的文件. 注意版本. spark 0.8.0 对应的scala 为2.9.3
* scala 编译: 和java 很像:
1, 直接编译脚本:
scalac HelloWorld.scala
scala -classpath . HelloWorld
2, sbt 打包编译. 类比maven
1), 安装sbt. 官网下载, 里面主要是sbt-langh.jar
sbt 脚本:
SBT_OPTS="-Xms512M -Xmx1536M -Xss1M -XX:+CMSClassUnloadingEnabled -XX:MaxPermSize=256M"
java $SBT_OPTS -jar `dirname $0`/sbt-launch.jar "$@"
chmod a+x sbt 使其成为可执行文件.
显然, sbt 脚本中调用 sbt-launch.jar 来完成实际的工作.
2), 项目目录结构:
$ find .
.
./simple.sbt
./src
./src/main
./src/main/scala
./src/main/scala/SimpleJob.scala
是不是和maven一样?!
3), 其中 simple.sbt 相当于pom文件
实例如下:
import AssemblyKeys._ seq(assemblySettings: _*) name := "simple_project" version := "1.0" scalaVersion := "2.9.3" libraryDependencies ++= Seq(
("org.apache.spark" %% "spark-core" % "0.8.1-incubating").
exclude("org.mortbay.jetty", "servlet-api").
exclude("commons-beanutils", "commons-beanutils-core").
exclude("commons-collections", "commons-collections").
exclude("commons-collections", "commons-collections").
exclude("com.esotericsoftware.minlog", "minlog")
) mergeStrategy in assembly <<= (mergeStrategy in assembly) { (old) =>
{
case PathList("javax", "servlet", xs @ _*) => MergeStrategy.first
case PathList(ps @ _*) if ps.last endsWith ".html" => MergeStrategy.first
case "application.conf" => MergeStrategy.concat
case "unwanted.txt" => MergeStrategy.discard
case x => old(x)
}
} resolvers += "Akka Repository" at "http://repo.akka.io/releases/"
打包命令:
sbt package
执行:
sbt run
* 注意, sbt文件两行之间必须有空行.. 否则有 unexpect eof 等报错..
为啥有这样的规定, 表示很奇怪. 注意就行. 不差这一下回车 :)
4), 如何对项目将所有依赖达成jar 包, 用于线上系统的部署?
A: 使用插件: sbt assembly
a), 在project/plugins.sbt 中增加一行:
addSbtPlugin("com.eed3si9n" % "sbt-assembly" % "0.9.2")
b), 在simple.sbt中增加:
import AssemblyKeys._ seq(assemblySettings: _*)
c), 运行命令: sbt assembly
打完的包在target/scala-*/中. simple_project-assembly-....jar
可以对比下和sbt package编译出来包的大小~~
注意这里里面可能有重复依赖的问题...
参考上面给的simple.dat文件给出的解决方法.
为啥能解决问题. 表示也不清楚, 直接给连接吧:
https://github.com/sbt/sbt-assembly#excluding-jars-and-files 解决多个包依赖不同版本的问题.
https://github.com/sbt/sbt-assembly#merge-strategy 解决同一个包, 被多次依赖的问题.
* 其他scala入门资料:
scala 程序入门: http://www.ibm.com/developerworks/cn/java/j-lo-funinscala2/
scala tutorial: http://www.scala-lang.org/old/sites/default/files/linuxsoft_archives/docu/files/ScalaTutorial-zh_CN.pdf
spark 官方 scala 程序中文版: http://www.cnblogs.com/vincent-hv/p/3298416.html
END
scala 101的更多相关文章
- 解决Scala异常处理java.lang.OutOfMemoryError: Java heap space error
需求:百万.千万.4千万级日志对设备进行除重环境:设备内存64G,scala单机版运行shell文件日志:20G 48000000.log4.0G 10000000.log396M 1000000.l ...
- Scala 安装 Exception in thread "main" java.lang.VerifyError: Uninitialized object exists on backward branch 96
windows下载安装完最新版本的Scala(2.12.4)后,终端如下错误 C:\Users\Administrator>scala -versionException in thread & ...
- Scala - Tips
1- 运行scala命令,提示报错 问题现象: 在Windows7系统中安装scala后(直接安装MSI包,或者解压zip包添加环境变量的方式),执行scala命令报错,但可以执行scala -ver ...
- Spark 开发中遇到的一些问题
1.StackOverflowError 问题:简单代码记录 : for (day <- days){ rdd = rdd.union(sc.textFile(/path/to/day) ... ...
- spark-sql访问hive的问题记录
好久没有弄博客了... hive0.14 spark0.12 [hadoop@irs bin]$ ./spark-sql Spark assembly has been built with Hive ...
- Spark Idea Maven 开发环境搭建
一.安装jdk jdk版本最好是1.7以上,设置好环境变量,安装过程,略. 二.安装Maven 我选择的Maven版本是3.3.3,安装过程,略. 编辑Maven安装目录conf/settings.x ...
- kafka单节点部署无法访问问题解决
场景:在笔记本安装了一台虚拟机, 在本地的虚拟机上部署了一个kafka服务: 写了一个测试程序,在笔记本上运行测试程序,访问虚拟机上的kafka,报如下异常: 2015-01-15 09:33:26 ...
- Spark入门,概述,部署,以及学习(Spark是一种快速、通用、可扩展的大数据分析引擎)
1:Spark的官方网址:http://spark.apache.org/ Spark生态系统已经发展成为一个包含多个子项目的集合,其中包含SparkSQL.Spark Streaming.Graph ...
- org.apache.spark.rpc.RpcTimeout$$anonfun$1.applyOrElse
跑sparkPis示例程序 [root@node01 bin]# ./spark-submit --master spark://node01:7077 --class org.apache.spar ...
随机推荐
- 重新想象 Windows 8 Store Apps (6) - 控件之媒体控件: Image, MediaElement
原文:重新想象 Windows 8 Store Apps (6) - 控件之媒体控件: Image, MediaElement [源码下载] 重新想象 Windows 8 Store Apps (6) ...
- xp硬盘安装Fedora14 过程记录及心得体会(fedora14 live版本680M 和fedora14 DVD版本3.2G的选择)
这次电脑奔溃了,奇怪的是直接ghost覆盖c盘竟然不中.之前电脑上硬盘安装的fedora14操作系统,也是双系统.不知道是不是这个问题,记得同学说过,在硬盘装fedora之后,要手动修改c盘隐藏的那个 ...
- HDU 1885 Key Task 国家压缩+搜索
点击打开链接 Key Task Time Limit: 3000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) ...
- Directx11学习笔记【十二】 画一个旋转的彩色立方体
上一次我们学习了如何画一个2D三角形,现在让我们进一步学习如何画一个旋转的彩色立方体吧. 具体流程同画三角形类似,因此不再给出完整代码了,不同的部分会再说明. 由于我们要画彩色的立方体,所以顶点结构体 ...
- 小代码编写神器:LINQPad 使用入门
原文:小代码编写神器:LINQPad 使用入门 一:概述 1:想查看程序运行结果,又不想启动 VS 怎么办? 2:想测试下自己的 C# 能力,不使用 VS 的智能感知,怎么办? 那么,我们有一个选择, ...
- ASP.NET之AdRotator实现淘宝浏览页面的商品随机推荐功能
如今随便上个网都能够看到淘宝.京东等各大电商平台的双十一购物狂欢宣传,从2009年開始淘宝愣是把11.11这一天打造成了全民购物狂欢节.阿里巴巴的上市更是激发了阿里人的斗志,据说他们今年的目标是100 ...
- MVC 5 Ajax + bootstrap+ handle bar 例: 实现service 状态
Js Script <script src="../../Scripts/handlebars-v1.3.0.js"></script> <scrip ...
- linux内核数据包转发流程(三)网卡帧接收分析
[版权声明:转载请保留出处:blog.csdn.net/gentleliu.邮箱:shallnew*163.com] 每一个cpu都有队列来处理接收到的帧,都有其数据结构来处理入口和出口流量,因此,不 ...
- V离MWare至Openstack至FDIO
离VMWare至Openstack 至FDIO --软件虚拟化和硬件虚拟化相结合 作者:廖恒 以VMWare为代表的软件虚拟化技术在企业IT中已是耳熟能详的不争现实.据在HPISS任职的好友告知,V ...
- 玩转Web之JavaScript(三)-----javaScript语法总结(三) 窗口/滚动条/文本的相关语法
JS语法集锦(三) 窗口/滚动条/文本 alert("文本") 警告框:警告框经常用于确保用户可以得到某些信息,当警告框出现后,用户需要点击确定按钮才能继续进行操作. con ...