ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

IntelliJ IDEA开发Spark案例之WordCount(非Maven、离线版)

2021-06-10 18:05:22  阅读:167  来源: 互联网

标签:IntelliJ Scala 离线 WordCount jar 服务器 spark 执行 打包


教程目录

0x00 教程内容
  1. 新建Scala项目
  2. 编写Scala代码
  3. 打包到服务器执行

实验前提:
a. 安装好了windows本地的scala
b. 安装好了IDEA的scala插件
c. 安装好了JDK

0x01 新建Scala项目
1. 新建Scala项目

a. 新建一个Scala项目,先选择Java,然后在右边选择Scala,配置好解压之后的scala包,其他的默认
在这里插入图片描述
b. 如果有提示,可以随便选一个
在这里插入图片描述

2. 项目配置

a. 右击src,建一个包,比如:com.shaonaiyi
在这里插入图片描述
b. 然后编辑项目结构,加入我们的Scala SDK(找到我们win本地的Scala主目录即可):
在这里插入图片描述
在这里插入图片描述
导入之后点击OK在这里插入图片描述
c. 导入我们的Spark依赖jar包(选择Spark主目录下的jars目录,然后一直OK):
在这里插入图片描述
在这里插入图片描述

0x02 编写Scala代码
1. 新建Scala类

a. 右击包名:com.shaonaiyi,创建Scala Class,然后选择Kind为Object
在这里插入图片描述
在这里插入图片描述

2. 编写WordCount代码

a. 修改Wordcount类为:

package com.shaonaiyi

import org.apache.spark.SparkContext

object Wordcount {

  def main(args: Array[String]): Unit = {

    var sc = new SparkContext("local[2]","Wordcount")
    var file = sc.textFile("spark-wc.iml")
    var wordRDD = file.flatMap(_.split(" ")).map((_,1)).reduceByKey(_ + _).sortBy(_._2)
    wordRDD.foreach(println(_))
  }

}
3. 本地执行

a. 执行代码可以看到统计结果
在这里插入图片描述

0x03 打包到服务器执行
1. 设置打包工程

a. 选择一种类型的包
在这里插入图片描述
b. 设置我们的Wordcount类里面的main方法
在这里插入图片描述
c. 排除我们服务器上有的包,即服务器已经有的jar包就不用也把他们打包上去了。
在这里插入图片描述
然后一直ok,执行完,稍等一会可以看到src同级目录下多了个out文件夹。

2. 打包操作

a. 打包
在这里插入图片描述
在这里插入图片描述
b. 执行完可以看到out目录有jar包了
在这里插入图片描述

3. 上传服务器并执行

a. 使用XFtp等工具上传jar包和项目下的即可(此处直接上传到~)
spark-wc.jar
spark-wc.iml
~路径下

b. 启动spark
$SPARK_HOME/sbin/start-all.sh
c. 执行(在jar包当前路径下):
spark-submit spark-wc.jar

注意要配置好spark的环境变量,才可以在任意路径下执行spark-submit操作,此处不再累赘。

0x04 统计结果展示

统计结果:
在这里插入图片描述

0xFF 总结
  1. 本教程不用联网也可以执行Spark案例,此外,一样也可以执行机器学习等案例。
  2. 本教程非常关键,因为网络不好或者是简单的项目,这种传统的方式也是非常简单方便的。
  3. Maven工程版本,请查看教程:IntelliJ IDEA开发Spark案例之WordCount

作者简介:邵奈一
大学大数据讲师、大学市场洞察者、专栏编辑
公众号、微博、CSDN邵奈一
本系列课均为本人:邵奈一原创,如转载请标明出处

福利:
邵奈一的技术博客导航

标签:IntelliJ,Scala,离线,WordCount,jar,服务器,spark,执行,打包
来源: https://blog.51cto.com/u_12564104/2891698

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有