当前位置: 首页>编程语言>正文

spark命令行优先执行任务 spark优先加载自定义jar包

本文测试环境:
● Win10
● Scala-2.12.3
● Spark-2.2.0
● Sbt-1.0.0
● JDK-1.8
● IDEA-2017.1.4
● Git(IDEA下载SBT插件时可能会用到)
● 2017/8/26(文章写完一直忘了发到博客上)

  • 我在配置IDEA+scala&sbt的过程中走了不少弯路,所以记录一下配置的过程,希望对新手有所帮助。
  • 官方目前主要维护的版本有两个:0.13.X和1.X。需要注意的是,IDEA上的SBT插件暂时是随着0.13.X系列更新的,而我本地是1.0.0,不知以后会不会出现写莫名的问题。
  • 建议安装前多看看:官方文档;pdf503页
  • 极客学院的0.13.15的:中译版;pdf仅62页
    (注:本人刚接触sbt,文中有什么错误的地方欢迎指正,一起学习)


文章目录

  • 目录:
  • 一、sbt简介&为什么使用sbt
  • 二、sbt安装
  • 三、console中使用sbt
  • 四、IDEA中使用sbt,并打包jar


目录:

一、sbt简介&为什么使用sbt

一.sbt简介&为什么使用sbt:
● 简介:SBT是一个现代构建工具。它是用Scala编写的,并且针对Scala也提供了很多方便快捷的功能。它也是一个通用的构建工具。
● 为什么:基于scala构建,可以充分的、灵活的使用scala代码
对于简单的项目,需要很少或根本不需要配置
连续编译(连续执行命令),打包和部署jar
生成文件和scaladoc
对Scala / java混合项目的支持
支持使用ScalaCheck,specs, 和ScalaTest进行测试
使用项目的类文件和依赖运行scala REPL(scala的编译器)(注:原文为:Starts the Scala REPL with project classes and dependencies on the classpath)
强大的依赖管理功能
子项目的模块化支持
外部项目的支持(需要配置一个Git仓库作为依赖!)
并行的执行任务,包括并行测试执行
支持库(library)管理:内部申明,外部Ivy或者Maven的配置文件,或者手动管理
(注:建议看完官方入门指南)(页面中有中文的,但是请注意中文的只翻译了一部分)地址:http://www.scala-sbt.org/1.x/docs/index.html

二、sbt安装

二、sbt安装(Windows)

  1. 在sbt官网http://www.scala-sbt.org/download.html,目前最新版为1.0.0(2017/8/26)。我下载的压缩包,添加SBT_HOME。将解压目录的bin目录加入path环境
    2.先别在命令行执行sbt console启动sbt,相关jar包默认会下载到C:\Users\Administrator.sbt(重装系统就没了)。
    关于conf下的 sbtconfig 和 sbtopts,我找到网上的3种可能正确的说法(或者都没什么错),看了sbt.bat 的shell脚本也没有拿定主意。希望知道的朋友可以解答以下:
  2. 若是windows系统,则只会使用conf下的sbtconfig.txt,不会用到sbtopts。
  3. conf/sbtconfig.txt: sbt的配置文件:在这里我们可以配置代理。
    conf/sbtopts:也是sbt的配置文件,主要包含配置设置ivy和boot的地址
    3. stackoverflow上的:

我认为:sbtconfig.txt只有Windows用户可用,而Windows用户可以将代理信息以及ivy和boot的地址,JVM参数等配置都写在sbtconfig.txt。以下是我的配置:(注:最开始我设置了-Dfile.encoding=UTF-8,反而中文乱码,建议大家不写;MaxPermSize在JDK1.8之后已经不再使用——已经废除永久代。)
# Set the java args to high

-Xms128m

-Xmx1024M

# -XX:PermSize=128m

# -XX:MaxPermSize=256m

-XX:ReservedCodeCacheSize=128m

# Set the extra SBT options

-Dsbt.log.format=true

# mydiv

-Dsbt.repository.config=C:\Users\Administrator.sbt\repo.repositories

-Dsbt.boot.directory=D:\sbt\mysbt\boot

-Dsbt.ivy.home=D:\sbt\mysbt\ivy

-Dsbt.repository.secure=false

注:
● 前几项是Java虚拟机的相关配置;
● -Dsbt.repository.secure=false 是否使用https协议获取依赖信息,感觉国内还是不开吧,体验更好。。。
● -Dsbt.ivy.home:配置vy的文件目录,ivy是sbt的默认管理项目依赖工具(下载的依赖都会保存在这里配置的目录下,和Maven的本地仓库一个道理)
● -Dsbt.repository.config : C:\Users\Administrator.sbt下创建repositories文件
[repositories]
[repositories]
local
nexus-aliyun: http://maven.aliyun.com/nexus/content/groups/public #typesafe-ivy-releases: http://repo.typesafe.com/typesafe/ivy-releases/,[organization]/[module]/[revision]/[type]s/artifact.[ext]
#typesafe2: http://repo.typesafe.com/typesafe/releases/ #sbt-plugin: http://repo.scala-sbt.org/scalasbt/sbt-plugin-releases/ #sonatype: http://oss.sonatype.org/content/repositories/snapshots #uk_maven: http://uk.maven.org/maven2/ #repo2: http://repo2.maven.org/maven2/

成功后的各个目录如下:

● .sbt目录

spark命令行优先执行任务 spark优先加载自定义jar包,spark命令行优先执行任务 spark优先加载自定义jar包_spark命令行优先执行任务,第1张

● sbt执行成功

spark命令行优先执行任务 spark优先加载自定义jar包,spark命令行优先执行任务 spark优先加载自定义jar包_maven_02,第2张

● boot文件夹

spark命令行优先执行任务 spark优先加载自定义jar包,spark命令行优先执行任务 spark优先加载自定义jar包_Scala_03,第3张

● ivy2文件夹

spark命令行优先执行任务 spark优先加载自定义jar包,spark命令行优先执行任务 spark优先加载自定义jar包_Scala_04,第4张

● sbt console

三、console中使用sbt

1.常用的的 sbt 命令

spark命令行优先执行任务 spark优先加载自定义jar包,spark命令行优先执行任务 spark优先加载自定义jar包_maven_05,第5张

sbtVersion:查看当前sbt版本

actions : 显示对当前工程可用的命令

publish-local : 把构建出来的jar包安装到本地的ivy缓存

publish : 把jar包发布到远程仓库(如果在git中配置了的话)

show name :查看当前项目的名字。

show libraryDependencies :查看当前项目依赖的库。

2.最好在预想的项目根目录下面执行的sbt命令!

最简单的测试代码:

● 随便建立一个文件夹,作为你项目的根目录,再建立一个scala文件:我的scala文件内容如下:

● cmd进入项目根目录,sbt—》run(注:会警告说没有设置sbt.version 因为我们还没有在工程目录hello下创建project\build.properties并设置sbt.version。)

spark命令行优先执行任务 spark优先加载自定义jar包,spark命令行优先执行任务 spark优先加载自定义jar包_maven_06,第6张

3.完整的目录结构:
(在sbt0.7.x, 我们只要创建项目目录,然后在项目目录下敲入sbt,sbt会自动为我们生成需要的目录和文件, 而sbt 0.10之后,如果不适用IDE,我们需要自己创建生相应的目录和文件)

spark命令行优先执行任务 spark优先加载自定义jar包,spark命令行优先执行任务 spark优先加载自定义jar包_scala_07,第7张

(注:手动创建目录后,再次编译运行scala文件,在project文件夹下还会生成一个target文件夹,与工程目录hello下的target文件夹几乎一样。感觉这与sbt的迭代式构建是有关系的)

官网截图:

spark命令行优先执行任务 spark优先加载自定义jar包,spark命令行优先执行任务 spark优先加载自定义jar包_spark命令行优先执行任务_08,第8张

解释:sbt 将会自动找到以下内容:

● 项目根目录下的源文件

● src/main/scala 或 src/main/java 中的源文件

● src/test/scala 或 src/test/java 中的测试文件

● src/main/resources 或 src/test/resources 中的数据文件

● lib 中的 jar 文件

  1. SBT支持两种使用方式:
    ● 交互模式
    执行 sbt 不跟任何命令行参数将会进入交互模式。交互模式有一个命令行(含有 tab 自动补全功能和历史记录)。
    例如,在 sbt 命令行里输入 compile:

compile

再次 compile,只需要按向上的方向键,然后回车。 输入 run 来启动程序。 输入 exit (建议)或者 Ctrl+D (Unix-like)或者 Ctrl+Z (Windows)可以退出交互模式。

(注:管理员权限sbt console进入scala命令行,可以使用“;”进行多行输入;也可以使用“:paste”命令进入粘贴模式,键入”Ctrl—D“解释执行代码):

spark命令行优先执行任务 spark优先加载自定义jar包,spark命令行优先执行任务 spark优先加载自定义jar包_scala_09,第9张

● 批处理模式

你也可以用批处理模式来运行 sbt,可以以空格为分隔符指定参数。对于接受参数的 sbt 命令,将命令和参数用引号引起来一起传给 sbt。

四、IDEA中使用sbt,并打包jar

详见我的另一篇文章:见我的这篇文章



https://www.xamrdz.com/lan/54v1960300.html

相关文章: