目录
为什么适用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)