Spark开发环境的搭建(一)

本文涉及的产品
全局流量管理 GTM,标准版 1个月
云解析 DNS,旗舰版 1个月
公共DNS(含HTTPDNS解析),每月1000万次HTTP解析
简介: Spark开发环境的搭建(一)

大概从这部分开始,我们讨论的方式画风会变成 "show me your code"。天才第一步,雀氏纸尿裤,今天我们把基础的开发环境搭建起来,经历一把从编码干到集群跑起的过程。

spark核心部分是scala语言写的,本身的项目是sbt管理项目依赖的,很多同学对sbt感到陌生,但是maven肯定是熟悉,sbt是简化了maven的构建配置,所以我们是可以直接使用maven来构建的。

我这边选用的工具是官网提供的Scala IDE,下载地址:

http://scala-ide.org/download/sdk.html,另外我们打开连接之后可以看到有Jdk的要求(图一):

图一:jdk的要求

 

所以,我们继续准备jdk,从requirements点击去便是jdk的下载地址...省掉这部分,java程序开发基础必修。安装好之后我们打开建立项目,我这边已经建立了一个spark的项目,先看下效果,有个期待^^

 

 

图二:spark项目导入的样子

看到这个很多人肯定很熟悉,其实就是eclipse的东西嘛。再仔细看看,发现其实里面写着的是scala代码来着,这个就是我们要的效果,java那部分还是和原来一样,但是同时也支持scala代码的编写。

下面我们来构建这个工程,这个是一个普通的maven工程,maven里面最头痛的就是包的依赖。不知道用什么包,什么版本。其实官网里面给了很多例子项目,只不过是和其他源码一起的,我们需要把这部分抠出来,这块便构成了我们最最权威的spark工程。这个事情之前在讨论yarn的时候做过,这次把方法给出来。

我们把spark源码解压,可以看到里面有个example的示例项目,

图三:源码中的examples的例子

 

我们用记事本打开examples/pom.xml文件,可以看到里面的内容

图四:pom.xml文件结构

 

可以看到examples其实是作为一个 spark 的模块被构建的,我们再查看里面的依赖:

图五:spark中的依赖

看到了么,里面有些依赖给了版本,但是用的是变量的方式给的,有些依赖是直接就没有给版本,这部分是因为在parent上面定义过的,所以在子模块中直接就引用了。有两种办法,我们可以去parent中找到,复制过来添加上,完全可以,就是要有点耐心;我们用第二招,第二招是我们解析出这部分依赖,mvn dependency:tree命令可以帮我们把依赖解析成一颗文本树。我们在目录下面调出控制台命令,注意目录不要弄错了,使用命令进行解析,图六

图六:解析依赖树

解析完成之后,我们打开刚刚生成的dept文件,查看内容(图七),看到了么,项目的依赖已经完全输出在这颗树中。

 

图七:依赖树的内容

接下来,我们复制examples下面的pom.xml文件,到我们目录下面,去掉parent部分,注意要添加groupID和version信息,因为已经不继承parent中的内容了,修改我们的项目名,取个好听的名字

 

图八:复制并且修改

在我们的ide中导入maven项目

 

图九:导入项目

 

导入之后,我们看到一堆错误,这个事情我们意料之中,我们已经导出了对应包的各个版本,我们从dept里面把对应的版本信息加到依赖文件中。

图十:缺少依赖的情况,错误提示

 

重复使用比较多的,我们定义成变量,然后直接在依赖文件中引用,单独使用的,我们加到后面的version上面就可以了。

 

图十一:定义变量以便引用

 

图十二:重复使用的替换一下

 

图十三:其他依赖从dept文本中替换就好了

 

修改完成之后会提示需要更新,右键quick Fix

图十四:fix maven project

修复完成之后我们建立src/main/java和src/main/scala目录,这个作为我们的源码路径,分别写java代码和scala代码

图十五:建立源码路径

回到eclipse,我们刷新一下工程,终于有点样子了。scala默认没有变成源码目录,我们右键build path,然后use as source,再看看。

图十六:构造完成的样子

到这一步已经没有报错信息了,一般情况会有点小开心,但是事情还没完,我们试试写下我们的第一个程序,还是那个老梗,JavaWordCount,从源码中例子拿过来改改就好。我们复制代码,报错,提示也还算清晰,lambda表达式要在1.8以上,jdk不行

 

图十七:jdk版本不对的报错

我们按照提示把jdk版本换一下,buildpath,选择jre那部分,edit

图十八:jdk版本切换

然后切换成1.8的就ok了

 

 

图十九:完成切换

 

换了之后,错误不报了,我们回到程序,再次运行,发现新的报错:

图二十:新的错误

这个是因为在执行的spark有调用hadoop命令去解析目录名字,具体的调用来自hadoop的源码中获取winutils.exe的操作,我们依照提示,把这部分文件加入到环境变量中

 

 

图二十一:寻找winutil.exe的路径找不到代码逻辑

这部分包的来源来自于在Windows环境下面编译hadoop源码获取,我们自己不想编译就直接下载一个就好了(我这里编译过一次)。

 

图二十一:寻找winutil.exe的包

 

图二十二:bin中的文件

 

我们把这部分文件配置到环境变量里面去:

 

重启eclipse,运行我们的程序:

 

图二十三:WordCount程序

 

 

图二十四:运行的结果

 

程序是我修改了一些,然后可以在本地运行的情况,运行成功了,写在最后小总结一下:

  1. maven工程中的依赖我们是直接提取官网最新的配置和版本,这部分的空目录可以作为蓝本保存,以后可以用作新工程或者发给小伙伴,而且是官网指定权威权威版本。
  2. 组件的选取,直接从官网获取,例如jdk的版本,scala的版本
  3. 在一步一步的构建过程中,了解这些错误的原因很重要,否则会手足无措
  4. 程序的模式是直接从本地构造数据进而调试我们的程序,在以后开发中的模式都会这样,后续会不断去用这种模式去开发

好了,下面我们来研究一下我们写下的这个程序,然后部署到集群上去,待续~~



目录
相关文章
|
4月前
|
分布式计算 Hadoop Scala
搭建 Spark 的开发环境
搭建 Spark 的开发环境
39 0
|
5月前
|
分布式计算 Java Scala
Spark开发环境的搭建(二)
Spark开发环境的搭建(二)
30 0
|
分布式计算 Java Hadoop
IntelliJ-IDEA-Mavne-Scala-Spark开发环境搭建
IntelliJ-IDEA-Mavne-Scala-Spark开发环境搭建
|
缓存 分布式计算 Linux
spark开发环境详细教程2:window下sbt库的设置
spark开发环境详细教程2:window下sbt库的设置
198 0
spark开发环境详细教程2:window下sbt库的设置
|
分布式计算 监控 Java
spark开发环境详细教程1:IntelliJ IDEA使用详细说明
spark开发环境详细教程1:IntelliJ IDEA使用详细说明
354 0
spark开发环境详细教程1:IntelliJ IDEA使用详细说明
|
分布式计算 Java Linux
如何搭建MaxCompute Spark开发环境。
如何搭建MaxCompute Spark开发环境。
414 0
|
分布式计算 IDE Java
Windows下spark开发环境搭建
Windows下spark开发环境搭建
192 0
|
分布式计算 大数据 Scala
|
分布式计算 Java Maven
Intellij idea配置Spark开发环境,统计哈姆雷特词频(2)
idea 新建maven 项目 输入maven坐标 maven 坐标 编辑maven文件 Spark 体系 中间层Spark,即核心模块Spark Core,必须在maven中引用。
2043 0
|
分布式计算 Java Python
Windows下单机安装Spark开发环境
转自:https://www.cnblogs.com/eczhou/p/5216918.html 转自:http://blog.csdn.net/u011513853/article/details/52865076 Windows下单机安装Spark开发环境 机器:windows 10 64位。
1857 0