Spark开发环境的搭建(二)

上回我们在本地运行了一个java写的spark程序, 在实际的开发中我们更多的是采用java和scala混合编码的形式,就是一个工程中两种代码结合使用。我们接着往下做,这次我们在原有的工程中去使用scala去实现我们的wordcount。

之前我们的搭建的环境还不能写scala代码,其实可以主动去试试,编译器都没法往下点的,没法创建任何的scala的文件。要实现java和scala混合编译得益于我们的maven插件,我们首先在工程中引入:

Spark开发环境的搭建(二)

图一:混合编译插件的引入

接下来,我们发现了一堆错,不过到现在为止,对这种小红错误已经不再紧张了,相反的这些错误会引导我们不断走向正确的道路。

Spark开发环境的搭建(二)

图二:引入scala之后的错误

错误的内容其实很明显,就是maven中引入的包scala版本不对,还记得我们上次在导出依赖时候的scala版本么,看到我们导出的版本,是不是很清楚要使用什么版本了.

 

Spark开发环境的搭建(二)

图三:引入scala之后的错误

我们需要的是2.11.x版本,最后那个小版本的话是兼容的,于是乎,我们找到我们添加scala包的地方buildpath->add Library,然后找到scala的版本,apply

Spark开发环境的搭建(二)

 

图四:引入scala的包

Spark开发环境的搭建(二)

图五:选择对应的版本

点击之后,成就达成,没有其他错误了。我们把相同的逻辑用scala实现一遍,注意代码的位置。

Spark开发环境的搭建(二)

图六:scala代码存放的位置

源码如下:

Spark开发环境的搭建(二)

图七:scala代码的实现

运行一下,我可以得到我们要的结果:

Spark开发环境的搭建(二)

图八:相同的结果

简单说下WordCount的计算过程就是计算数据中单词出现的次数,我这边定义list便是模拟了外部的数据,细心的宝宝应该发现我这边给的参数和源码中的不一样,这是因为我这边为了在本地运行调整,把运行模式设置为了本地,我们进一步,加大一下数据量,我们动用集群的计算能力去运行我们的程序。我们把程序做下调整,把list增大到10000次,随机从sentences中生成数据。

Spark开发环境的搭建(二)

图九:增大数据量

其中sentences的内容是:

Spark开发环境的搭建(二)

图十:修改我们要统计的句子

然后,我们打包,在代码的路径下面执行mvn clean scala:compile compile package这个命令表示的是混合编译:

Spark开发环境的搭建(二)

图十一:混合编译

 

包的结果在target上面

Spark开发环境的搭建(二)

图十二:编译之后jar包的位置 

上传到我们的hadoop机器上面,接下来,我们运行到yarn上面,还记得那个熟悉的命令么,改改参数,我们变成这样子:

Spark开发环境的搭建(二)

图十三:程序的启动命令

--class便是我们的主类名,后面那个jar包改成我们的jar

执行结果如下:

Spark开发环境的搭建(二)

图十四:最后的运行结果

 

ok到了这一步,我们算是完整通关了,接下来我们来解剖一下这个小wordcount程序,下一篇哈~

如果想关注更多文章,可以扫描二维码

Spark开发环境的搭建(二)