* 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的更多相关文章

  1. 解决Scala异常处理java.lang.OutOfMemoryError: Java heap space error

    需求:百万.千万.4千万级日志对设备进行除重环境:设备内存64G,scala单机版运行shell文件日志:20G 48000000.log4.0G 10000000.log396M 1000000.l ...

  2. 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 & ...

  3. Scala - Tips

    1- 运行scala命令,提示报错 问题现象: 在Windows7系统中安装scala后(直接安装MSI包,或者解压zip包添加环境变量的方式),执行scala命令报错,但可以执行scala -ver ...

  4. Spark 开发中遇到的一些问题

    1.StackOverflowError 问题:简单代码记录 : for (day <- days){ rdd = rdd.union(sc.textFile(/path/to/day) ... ...

  5. spark-sql访问hive的问题记录

    好久没有弄博客了... hive0.14 spark0.12 [hadoop@irs bin]$ ./spark-sql Spark assembly has been built with Hive ...

  6. Spark Idea Maven 开发环境搭建

    一.安装jdk jdk版本最好是1.7以上,设置好环境变量,安装过程,略. 二.安装Maven 我选择的Maven版本是3.3.3,安装过程,略. 编辑Maven安装目录conf/settings.x ...

  7. kafka单节点部署无法访问问题解决

    场景:在笔记本安装了一台虚拟机, 在本地的虚拟机上部署了一个kafka服务: 写了一个测试程序,在笔记本上运行测试程序,访问虚拟机上的kafka,报如下异常: 2015-01-15 09:33:26 ...

  8. Spark入门,概述,部署,以及学习(Spark是一种快速、通用、可扩展的大数据分析引擎)

    1:Spark的官方网址:http://spark.apache.org/ Spark生态系统已经发展成为一个包含多个子项目的集合,其中包含SparkSQL.Spark Streaming.Graph ...

  9. org.apache.spark.rpc.RpcTimeout$$anonfun$1.applyOrElse

    跑sparkPis示例程序 [root@node01 bin]# ./spark-submit --master spark://node01:7077 --class org.apache.spar ...

随机推荐

  1. Jquery中使用setInterval和setTimeout 容易犯的低级错误

    直接在ready中调用其他方法,会提示缺少对象的错误,解决方法如下: 方法1. 应用jQuery的扩展可以解决这个问题. $(document).ready(function(){ $.extend( ...

  2. 重新想象 Windows 8 Store Apps (2) - 控件之按钮控件: Button, HyperlinkButton, RepeatButton, ToggleButton, RadioButton, CheckBox, ToggleSwitch

    原文:重新想象 Windows 8 Store Apps (2) - 控件之按钮控件: Button, HyperlinkButton, RepeatButton, ToggleButton, Rad ...

  3. JDK源码学习系列03----StringBuffer+StringBuilder

                         JDK源码学习系列03----StringBuffer+StringBuilder 由于前面学习了StringBuffer和StringBuilder的父类A ...

  4. 修改easyui datebox默认日期格式

    问题描述: 根据jquery easyui datebox demo中给的示例,导入和使用datebox, 发现日期格式为: 6/22/2011, 其他的今天和关闭也是 Today, Close, 对 ...

  5. ReactJS学习 相关网站

    React 入门实例教程-阮一峰 http://www.ruanyifeng.com/blog/2015/03/react.html汇智网-React 互动学习http://hubwiz.com/co ...

  6. 在Web.Config文件中使用configSource,避免动态修改web.config导致asp.net重启(另添加一个Config文件用于管理用户数据)

    原文:在Web.Config文件中使用configSource,避免动态修改web.config导致asp.net重启(另添加一个Config文件用于管理用户数据) 我们都知道,在asp.net中修改 ...

  7. 求Sn=a+aa+aaa+…+aa…aaa(有n个a)…

    时间限制: 1 Sec  内存限制: 128 MB 提交: 352  解决: 174 [提交][状态][讨论版] 题目描述 求Sn=a+aa+aaa+-+aa-aaa(有n个a)之值,其中a是一个数字 ...

  8. Apache Commons Math3学习笔记(2) - 多项式曲线拟合(转)

    多项式曲线拟合:org.apache.commons.math3.fitting.PolynomialCurveFitter类. 用法示例代码: // ... 创建并初始化输入数据: double[] ...

  9. Windows Server 2008 R2 SP1 下载地址

    Windows Server 2008 R2 SP1 http://download.microsoft.com/download/0/A/F/0AFB5316-3062-494A-AB78-7FB0 ...

  10. maple 教程

    1 初识计算机代数系统Maple 1.1 Maple简说 1980年9月, 加拿大Waterloo大学的符号计算机研究小组成立, 開始了符号计算在计算机上实现的研究项目, 数学软件Maple是这个项目 ...