100字范文,内容丰富有趣,生活中的好帮手!
100字范文 > mac配置idea-scala-spark开发环境

mac配置idea-scala-spark开发环境

时间:2019-10-20 19:04:58

相关推荐

mac配置idea-scala-spark开发环境

目录

为什么适用Scala做spark开发配环境过程scalasparkidea中scala配置

为什么适用Scala做spark开发

作为python的忠实拥簇者,昨天写了整整一天pyspark的我被老大关进小黑屋要求以后用Scala作为spark的开发语言!!一开始我是拒绝的 TnT 后期从网上获取了这样做的原因:

1、(最重要的)现在市场上大多数企业的大数据平台,只要不涉及用户兴趣分析“利用深度学习框架等”必须利用python的包(tensorflow、pytorch等),多是利用scala进行开发,因为spark本身就是由scala编写的,第一运算效率高,第二在与其他大数据组件例如druid、kafka等进行交互时,无需配置太多环境变量,而python的环境变量配置非常之麻烦。

2、scala是java的进阶版!!必须掌握(再次猛男落泪)

于是接下来,进入了我今天一整天无尽的配环境之旅(全是坑。。。)

配环境过程

scala

我用的是homebrew进行Scala下载(想念conda)

brew install scala

默认下载最新版本的scala,下面是我的版本

brew info scala

注意⚠️:homebrew的默认下载地址为:usr/local/Cellar/…

usr文件夹在访达里是隐藏的(坑死我了),在后期idea引入scala sdk时,没法输路径,只能去手动定位。这个后面再讲解决方法

spark

/ 下载链接

以上为spark的下载版本选择,如果是需要链接Hadoop集群做开发,需要选12(依据Hadoop版本不同适配),单机开发做练习,3即可。

同样也可以使用homebrew进行install,但是!!homebrew不能指定spark版本(就像不能指定python版本一样坑,我爱conda)

homebrew install spark

默认下载基于hadoop的版本

以上是我的spark版本

注意⚠️:spark是基于jdk1.8的,如果电脑中有多版本jdk(比如我装了jdk1.7和jdk1.8),需要改变java环境变量将默认java版本设为java8

idea中scala配置

这是折磨我最深的环节!!

第一步:idea - Preferences - Plugins

搜索Scala,进行plugins的安装。

第二步:在初始界面 file - new - project - scala - IDEA

注意⚠️:我一开始想建立基于maven的scala项目,所以选择了maven,然后自选archetype,选择了scala,自动引入了一堆Scala的依赖balabala,由pom.xml进行管理。单纯用scala开发项目,这样是可以的。但是要写spark,要引入一堆spark自带的jar包,所以建立单纯的scala项目即可。

在引入本地sdk环节,遇到了之前提到过的,在手动添加目录时,找不到/usr目录的情况。

defaults write com.apple.finder AppleShowAllFiles YES; killall Finder

将这条命令打到终端,可以让finder中所有隐藏目录显示出来。

但是,显示出来后,手动添加时依然找不到目录。使用command+shift+G,强行进入目录选择,选择下载后的scala包。

当然你也可以选择把scala目录mv到自己的目录下。但这样会有以下缺陷

1、homebrew不好管理

2、SCALA_HOME 等环境变量混乱

第三步:建立好自己的project中,必须要引入spark的所有jar包!! 才能定义spark类

(吐槽:跟pycharm的仓库机制的使用体验感相差甚远。。)

File - Project Struture - libraries

选择添加jar包 ,定位到通过homebrew安装的spark目录下,bin中的jars文件夹,选择所有(所有!)的jar包添加。

注意⚠️:这时候就体现出了通过homebrew管理资源的好处。usr/local/Cellar/ 作为默认下载及安装路径,可以实现资源的快速定位。反言之当你通过官网下载安装到自己的路径,定位资源时比较麻烦。当然如果你使用python的话,anaconda可以解决一切问题(我爱conda)

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。