使用Scala写第一个Spark程序

环境:
1, ubuntu 16.04
2, Intellij
3, jdk1.8
4, Scala2.11
5,Spark 2.1.1
操作过程:
一,安装好Intellij,配置jdk,这些就不详细写了.
二,安装Scala
1)下载Scala
scala下载地址
这里注意Scala需要下载2.12之前的,spark目前不支持2.12之后的Scala的版本,之前我就吃了这个亏.
2)解压

tar -xvzf scala-2.11.1.tgz -C ~/

这里我解压到自己用户主目录下,配置环境变量的话换成应该换成自己解压的目录
3)配置环境变量
这里我忘记是自动配置还是自己配的了,总之如果解压之后没有那就自己配置吧.打开当前用户目录下的.bashrc文件,将下边环境变量配置加到文件中.

    export SCALA_HOME=/home/lovixs/scala-2.11.1
    export PATH=${SCALA_HOME}/bin:$PATH

4)验证
输入scala,如果进入scala的控制台,说明安装就成功了.
三,安装Spark
这个下载去官网把Spark下载即可.
spark下载链接
这个解压到自己的工作目录即可
注意:这里如果网络不好可以换个网络试一下,我下载的时候就是校园网下不动,cmcc却很快.
四,在Intellij新建一个项目
1,安装scala插件
首先在intellij中安装scala插件,File => Setting => Plugins,在搜索拦输入Scala,然后点击下边Browse Repositories,搜索到之后点击Install,然后重启Intellij即可
2,新建一个Sbt项目
Sbt是类似Maven的一个管理Scala项目和打包的工具,所以这里直接新建一个Sbt项目.
New => Project => Scala,然后选择SBT,点击Next即可
这一步可谓是最麻烦的,麻烦倒不是操作麻烦,而是网络.因为使用sbt来管理和打包scala项目,sbt的一些插件和jar包是真的很慢.网上有一种方法,大家不妨试一试.
* 在.sbt/目录下 新建 repositories
* 在repositories中写入一下内容,起始就是把sbt下载的源改为国内的.

[repositories]
  local
  oschina:http://maven.oschina.net/content/groups/public/ 
  oschina-ivy:http://maven.oschina.net/content/groups/public/, [organization]/[module]/(scala_[scalaVersion]/)(sbt_[sbtVersion]/)[revision]/[type]s/[artifact](-[classifier]).[ext]

然后再下载可能会快点.
当然我试了试貌似对我不感冒,最后用cmcc配置了个代理才成功.
代理是在Setting => Appearance & Behavior => System Setting => HTTP Proxy中配置的,用的shadow socks ,大家可以自行配置,网上教程也很多.
3,WordCount类
在src/main/scala下新建WordCount类,右键scala目录,选择new => Scala Class,然后输入类名WordCount,选择Kind为Object,内容为下.

import org.apache.spark.{SparkConf, SparkContext}

object wordCount {
  def main(args: Array[String]){
    val conf = new SparkConf().setAppName("wordcount")
    val sc = new SparkContext(conf)
    val input = sc.textFile("/home/lovixs/work/spark-2.1.1-bin-hadoop2.7/bin/test")//存储要分析的文本文件
    val lines = input.flatMap(line => line.split(" "))
    val count = lines.map(word => (word,1)).reduceByKey{case (x,y) => x+y}
    val output = count.saveAsTextFile("/home/lovixs/work/spark-2.1.1-bin-hadoop2.7/bin/helloSparkRes")//存储处理结果的位置,自行更改
  }
}

4,打包代码
先创建jar包,File => Project Structure => Artifacts ,点击+号,选择Jar => from modules with dependencies ,然后选择module,就是刚才我们新建的项目,然后在main class选择刚才新建的WrodCount类,注意下边的选项选择第二个选项,否则intellij会把jar中所有的依赖都打包进去,这样打出的jar会巨大.
这里写图片描述
然后build,生成jar包.build => build artifacts ,然后选择build就可以了.jar包在项目的out/artifacts/name_of_project_jar目录下.
五,将打包的jar放到spark集群上运行(伪集群,只有一个worker节点)
1, 为了方便spark登录本机,首先配置本机无密ssh登录.
* ssh-keygen生成本机的公私钥
* 在~/.ssh目录下新建authorized_keys文件,然后cat id_rsa.pub > authorized_keys,把公钥的内容写入新建的文件中
* 更改权限: chmod 600 authorized_keys
2,把打好的jar包,就是刚才项目中的out/artifacts/name_of_project_jar目录下的以项目名为名字的jar包拷贝一个特定的目录.
3,启动集群
进入spark文件夹中,./sbin/start-master.sh 启动集群.使用jps可以查看当前集群中的节点.
4,启动worker节点
./bin/spark-class org.apache.spark.deploy.worker.Worker spark://lovixs-QTK5:7077
!!注意:
最后的spark://lovixs-QTK5:7077 ,需要我们访问本地的8080端口,替换为spark为我们生成的url地址.
5,提交作业
./bin/spark-submit –master spark://lovixs-QTK5:7077 –class wordCount /home/lovixs/work/myfirstscala.jar
其中同样要注意替换自己的url地址,和类名(wordCount),最后为jar包的位置.
六,检查结果
生成的结果在代码中被我存在了/home/lovixs/work/spark-2.1.1-bin-hadoop2.7/bin/helloSparkRes目录下,大家可以在自己代码中设置的位置找到程序输出的结果.
这里写图片描述
这时我们就可以看到是两个节点(master和worker)分别的输出了!

后记:唉,说实话写到第四条我就后悔了,字是真多,当时觉得很复杂的东西写来简单不少.也可能是这几天忙着天天写业务代码脑子坏掉了,也可能是单纯的当时被网络折磨的,也不知道写这么多有没有用,希望能有人用的到吧.

  • 2
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值