文档章节

SPARK学习之 --- eclipse / sbt / scala 配置

莫问viva
 莫问viva
发布于 2016/01/12 20:55
字数 1519
阅读 2595
收藏 9


工作以及兴趣所致,开始了spark学习之旅,浏览网上大牛们的博客 文章,并且结合官网docs,刚开始云里雾里,现在也能雾里看到点花了。

学习spark,首先我们知道spark是由scala语言编写而成,至于为何,总结说来还是语言的原因,语言的优势,那么scala就脱颖而出了, 光就我目前所了解所接触,确实很多源码中用scala实现是何等的简洁,反观java,有点点的辛酸。

那么要不就先学习scala吧,以后还要靠着这语言来深入理解spark来 阅读spark源码呢。

(1) 开发工具?

(2) 项目构件工具?

(3) 打包部署?

开发工具,首先就想到的是 eclipse-scala ide插件,毕竟跟eclipse那么多年的感觉了,eclipse天天见。

Scala IDE for Eclipse

项目构件工具,原本也是安装m2eclipse-scala插件,使用最熟悉的maven的,但是一来该插件更新地址目前好像不好使了,而且广大博友也都认为还是 原生的sbt比较好,那么还是花点时间来了解下SBT(Simple Build Tool)吧。

SBT是scala语言项目的构建工具,就相当于maven是java项目工程的构建工具。SBT本身也很强大,两者的操作,构建流程都比较类似,所以使用maven的那种思想,去类比sbt即可。但是有一点需要弄清楚,因为目前好像eclipse中并没有sbt的工具插件,不像eclipse中有m2e,可以集成maven工具插件,所以在使用的过程中 sbt的构建过程并不是通过eclipse来完成,而是使用sbt和eclipse相互配合完成。这也是在使用过程中有点不方便的地方。

要使用sbt,先安装吧,本章就讲在windows下的安装方法吧 http://www.scala-sbt.org/download.html 下载msi安装包。本文安装使用0.13.9版本。

安装后的目录非常 简洁:   /bin    /conf   配置好系统环境变量PATH,添加bin目录所在。这样我们就可以在任意位置执行sbt.bat脚本了。 

打开cmd命令窗口,输入sbt 命令。 sbt首次运行的时候需要下载一些依赖包,说到下载依赖包,这里再次插入一个话题拿就是当网络环境中有代理服务器的时候。由于在公司环境下有代理服务器的问题,所以在执行sbt之前一定主要要配置好代理服务器的地址信息。 我就简单粗暴的再环境变量里面分别配置了 

http_proxy=http://ip:port   

https_proxy=https://ip:port

两个环境变量,这样就能顺利下载依赖包了。 

依赖包下载完成之后,就会顺利的进入到了stb的交互式操作控制台。

我们知道常见maven项目后,在项目目录下会有pom.xml文件,会有相应的.project, .classpath文件,这都是maven工程所特有的工程目录结构,

同样的基于sbt构建的scala项目工程也需要有相应的工程目录结构,我们想要生成这样的目录结构需要一个 sbt-eclipse插件。 https://github.com/typesafehub/sbteclipse ,

那么现在的问题就是如何将这个插件添加到sbt中去:在安装sbt后,会在操作系统的用户目录下面生成一个目录文件


在上图目录中,创建一个文件夹命名为plugins,在该文件夹中创建一个文本文件,命名为build.sbt

该配置文件就是相对于sbt的一个全局配置。

我们在该文件中添加,sbteclipse插件。

addSbtPlugin("com.typesafe.sbteclipse" % "sbteclipse-plugin" % "2.4.0")  

在cmd命令行,重新执行sbt命令,sbt会下载sbt-eclipse插件了。 

安装完成sbt-eclipse插件以后,那么使用sbt就可以创建 eclipse下的基于sbt构建的项目工程结构了。

在eclipse的工程目录 workspace下新建一个文件夹,文件夹命名为scala-sbt-test。

在cmd命令窗口中定位到scala-sbt-test目录下,执行sbt命令,进入sbt控制台。sbt提供了eclipse命令,来生成基于sbt构建的eclipse工程结构。


生成好了 eclipse下基于sbt构建的工程目录结构,那么接下来就是将项目导入到eclipse

目前为止,基于sbt构建的eclipse工程已经搭建完成。

maven项目的构建需要pom.xml,同样的sbt项目的构建需要build.sbt配置文件,

第三方包的依赖,仓库都配置,sbt相关的配置项都在build.sbt中配置添加。(具体该配置文件中配置什么,怎么配置,本文就详述了,具体可看sbt官网描述。

注意:每次当build.sbt中相关配置变化后,需要生效的话,都需要执行 sbt eclipse命令来更新应用。


最后说一下 打包实现。

maven中打包需要assembly插件,同样的sbt中也提供了assembly插件。

在全局build.sbt配置文件中,添加assembly插件

addSbtPlugin("com.eed3si9n" % "sbt-assembly" % "0.11.2")  


在项目工程下的build.sbt配置文件中,添加对 assembly插件的引用

import AssemblyKeys._  
assemblySettings


打包执行:

sbt  assembly 

命令。


最后把全局build.sbt内容以及项目下build.sbt文件内容分别展示下

全局build.sbt

resolvers += Resolver.url("artifactory", url("http://scalasbt.artifactoryonline.com/scalasbt/sbt-plugin-releases"))(Resolver.ivyStylePatterns)  
  
resolvers += "Typesafe Repository" at "http://repo.typesafe.com/typesafe/releases/"  
  
addSbtPlugin("com.typesafe.sbteclipse" % "sbteclipse-plugin" % "2.4.0")  
  
addSbtPlugin("com.eed3si9n" % "sbt-assembly" % "0.11.2")



项目下build.sbt

import AssemblyKeys._  
assemblySettings

name := "spark-scala-wordcount-network"  
  
version := "1.0"  
  
scalaVersion := "2.11.7"  
  
EclipseKeys.createSrc := EclipseCreateSrc.Default + EclipseCreateSrc.Resource  
  
libraryDependencies ++= Seq(  
  "org.apache.spark" % "spark-core_2.10" % "1.3.0" % "provided",
  "org.apache.spark" % "spark-streaming_2.10" % "1.3.0" % "provided", 
  "log4j" % "log4j" % "1.2.16" 
)  
  
resolvers ++= Seq(  
      // HTTPS is unavailable for Maven Central  
      "Maven Repository"     at "http://repo.maven.apache.org/maven2",  
      "Apache Repository"    at "https://repository.apache.org/content/repositories/releases",  
      "JBoss Repository"     at "https://repository.jboss.org/nexus/content/repositories/releases/",  
      "MQTT Repository"      at "https://repo.eclipse.org/content/repositories/paho-releases/",  
      "Cloudera Repository"  at "http://repository.cloudera.com/artifactory/cloudera-repos/",
      "nexus"               at "http://172.16.25.142/nexus/content/repositories/releases/",
      "nexus snapshot"      at "http://172.16.25.142/nexus/content/repositories/snapshots/",  
      Resolver.mavenLocal  
)




总结:花了点时间总算理清楚了 eclipse sbt scala之间的因果关系

© 著作权归作者所有

莫问viva
粉丝 41
博文 140
码字总数 116543
作品 0
长沙
高级程序员
私信 提问
win10 spark+scala+eclipse+sbt 安装配置

转载请务必注明原创地址为:https://dongkelun.com/2018/03/15/winSparkConf/ 1、首先安装配置jdk1.8以上,建议全部的安装路径不要有空格 2、安装spark 2.1 下载 下载地址:http://spark.apac...

董可伦
2018/05/20
0
0
Scala-Spark环境搭建配置

开始搭建的jdk这些自不必说,本文只是简单的介绍安装scala/spark 1.下载scala安装包 去官网下载tgz包,解压在/opt/scala/下,设置环境变量: export SCALA_HOME=/opt/scala/scala-2.10.3exp...

hanzhankang
2014/02/28
17.3K
0
Windows + IDEA + SBT 打造Spark源码阅读环境

http://guozhongxin.com/pages/2014/10/15/sparksourcecode.html Spark源码阅读环境的准备 Spark源码是有Scala语言写成的,目前,IDEA对Scala的支持要比eclipse要好,大多数人会选在在IDEA上...

chenhao_asd
2018/04/25
0
0
在Windows上build Spark

在本机(Windows 8)上安装spark玩一玩,Spark的Quick Start上没有指明具体步骤,自己Build好了之后把步骤记录一下。 首先,到Spark的官网上下载Spark的压缩包,然后解压缩到本地文件夹。我下...

wangyugod
2014/11/13
6.7K
0
spark-submit报错:Exception in thread "main" java.sql.SQLException:No suitable driver

版权声明:本文由董可伦首发于https://dongkelun.com,非商业转载请注明作者及原创出处。商业转载请联系作者本人。 https://blog.csdn.net/dkl12/article/details/80256619 我的原创地址:h...

董可伦
2018/05/09
0
0

没有更多内容

加载失败,请刷新页面

加载更多

使用CSS自定义属性构建骨架屏

写在前面 几天前看到薄荷前端团队分享的《前端骨架屏方案小结》,突然回想起一年前看到的max bock写的《Building Skeleton Screens with CSS Custom Properties》,翻译整理写下出此文,分享...

前端老手
昨天
4
0
Docker常用命令小记

除了基本的<font color="blue">docker pull</font>、<font color="blue">docker image</font>、<font color="blue">docker ps</font>,还有一些命令及参数也很重要,在此记录下来避免遗忘。 ......

程序员欣宸
昨天
4
0
MAT使用-jvm内存溢出问题分析定位

1.MAT简介: MAT 全称 Eclipse Memory Analysis Tools 是一个分析 Java堆数据的专业工具,可以计算出内存中对象的实例数量、占用空间大小、引用关系等,看看是谁阻止了垃圾收集器的回收工作,...

xiaomin0322
昨天
4
0
内网和外网之间的通信(端口映射原理)

首先解释一下“内网”与“外网”的概念: 内网:即所说的局域网,比如学校的局域网,局域网内每台计算机的IP地址在本局域网内具有互异性,是不可重复的。但两个局域网内的内网IP可以有相同的...

Jack088
昨天
6
0
3.深入jvm内核-原理、诊断与优化-4. GC算法和种类

一、GC算法和种类 GC的概念 GC算法 引用计数法 标记清除 标记压缩 复制算法 可触及性 Stop-The-World GC的对象是堆空间和永久区 引用计数法 老牌垃圾回收算法 通过引用计算来回收垃圾 使用者...

hexiaoming123
昨天
4
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部