大概从这部分开始,我们讨论的方式画风会变成 "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. 程序的模式是直接从本地构造数据进而调试我们的程序,在以后开发中的模式都会这样,后续会不断去用这种模式去开发

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

想要关注更多文章,请扫描二维码

Spark开发环境的搭建(一)相关推荐

  1. Spark开发环境的搭建与配置(基于Linux)

    目录 一.部署环境安装说明 二.Spark安装 1.Spark下载 2.解压Spark安装包 3.配置环境 4.安装scala(scala要在同一目录下) 一.部署环境安装说明 部署环境VMware+ ...

  2. Spark开发环境的搭建

    (1)在/opt目录下建立 software,module两个文件,software用来下载安装包,下载或的安装包可以解压到module文件.小编下载spark的版本是:spark-2.3.2-bin ...

  3. idea spark java,IntelliJ Idea 搭建spark 开发环境

    笔者介绍的是在MAC环境下使用Idea搭建spark环境. 环境: spark 2.0.0 scala 2.11.8 maven 3.9.9 idea 15 1.Idea的安装.Idea可以在官网上下 ...

  4. 如何使用intellij搭建spark开发环境(下)

    本文转自http://www.beanmoon.com/2014/10/11/%E5%A6%82%E4%BD%95%E4%BD%BF%E7%94%A8intellij%E6%90%AD%E5%BB%B ...

  5. 如何使用IntelliJ IDEA搭建spark开发环境(上)

    本文部分转自http://www.beanmoon.com/2014/10/11/%E5%A6%82%E4%BD%95%E4%BD%BF%E7%94%A8intellij%E6%90%AD%E5%BB ...

  6. Spark 开发环境搭建(1)IDEA Gradle的安装部署、使用

    Spark 开发环境搭建(1)使用IDEA Gradle的方式 1,JAVA环境检查 C:\Windows\System32>java -version java version "1 ...

  7. Intellij搭建spark开发环境

    spark怎么学习呢?在一无所知的前提下,首先去官网快速了解一下spark是干什么的,官网在此.然后,安装开发环境,从wordcount开始学习.第三,上手以后可以学习其他算法了.最后,不要放弃,继续 ...

  8. idea搭建spark开发环境完整版(windows)

    利用intellij idea 搭建spark开发环境(windows) 本文配置所有环境 Win10 企业版2016长期服务版 Jdk1.8.0.131 Hadoop2.7.3 Spark2.2.0 ...

  9. Spark开发环境搭建(提供实验平台)

    Spark开发环境搭建 1)Scala环境 1. 前置说明 安装与配置Scala开发环境. 实验平台直达链接 Scala是一种函数式面向对象语言,它融汇了许多前所未有的特性,而同时又运行于JVM之上. ...

  10. PyCharm搭建Spark开发环境windows下安装pyspark

    目录 windows下安装pyspark PyCharm搭建Spark开发环境 windows下安装pyspark spark和hadoop版本版本之间有对应关系 安装jdk 安装hadoop 下载 ...

最新文章

  1. 轻量级NLP工具Trankit开源,中文处理更精准,超越斯坦福Stanza,内存占用小45%
  2. Python机器学习——线性模型
  3. kafka comsumer
  4. spring原始注解
  5. 前端三部曲之Html -- 1(html的基本结构和常见的meta标签的作用)
  6. python笔记之利用scrapy框架爬取糗事百科首页段子
  7. 02.生成、打包、部署和管理应用程序及类型
  8. Swagger:Rest API的描述语言
  9. Android-JNI开发系列《四》Native-Crash定位
  10. 集合和数组的区别_java集合最全说明
  11. C# 将已有程序封装为DLL文件,供其他程序调用
  12. 链表 之 字典树(讲解+模板)的构建
  13. html新的页面打开新页面,javascript如何打开新窗口?
  14. 什么是计算机的超级用户账号,administrator是什么意思
  15. html中鼠标点击效果的制作,用CSS实现鼠标单击特效-网页设计,HTML/CSS
  16. html怎么解压缩文件,压缩包7z如何解压
  17. 2022可用的免费天气预报API接口
  18. iOS端如何实现带UI截屏分享
  19. 武汉新时标文化传媒有限公司短视频创作者实现突围?
  20. CentOS6.8搭建Sentry环境

热门文章

  1. 【饥饿游戏搜索算法】基于饥饿游戏搜索算法求解单目标优化问题(HGS)含Matlab源码
  2. 他一定幸福地生活在那里
  3. KV杀毒软件创始人离世
  4. 正则表达式网站在线测试
  5. Chrome浏览器翻译无法使用和ide谷歌翻译插件【更新 TKK 失败,请检查网络连接】解决办法
  6. 【题解】桐桐的递归函数
  7. 策略路由(Policy-Based-Route)
  8. python求派_python求π
  9. 用EasyHMI做的工程示例一览
  10. Hadoop 3.1 2.x新特性之har归档