当前位置: 首页 > news >正文

在IDEA运行spark程序(搭建Spark开发环境)

       建议大家写在Linux上搭建好Hadoop的完全分布式集群环境和Spark集群环境,以下在IDEA中搭建的环境仅仅是在window系统上进行spark程序的开发学习,在window系统上可以不用安装hadoop和spark,spark程序可以通过pom.xml的文件配置,添加spark-core依赖,可以直接在IDEA中编写spark程序并运行结果。

一、相关软件的下载及环境配置

1.jdk的下载安装及环境变量配置(我选择的版本是jdk8.0(即jdk1.8),建议不要使用太高版本的,不然配置pom.xml容易报错)

链接:https://pan.baidu.com/s/1deXf6pgMiRca1O724fUOxg 
提取码:sxuy

双击安装包,一直“Next”即可,最好不要安装到C盘,中间修改一下安装路径即可,最后点击“Finish”。我将jdk1.8安装在了D盘目录下的soft文件夹,bin路径如下:

配置环境变量:

win+R打开命令窗口输入:javac -verison ,进行检测是否成功配置环境变量:

2.IDEA的下载安装(我选择的版本是2019.2.3,建议选择低版本的IDEA)

官网下载地址:IntelliJ IDEA – 领先的 Java 和 Kotlin IDE (jetbrains.com.cn)

3.scala的下载(我选择的版本是2.12.15)安装及环境变量的配置

官网下载地址:The Scala Programming Language (scala-lang.org)

双击打开下载好的安装程序,一直“Next”即可,最好不要安装到C盘,中间修改一下安装路径即可,最后点击“Finish”。我将scala软件安装在了D盘目录下的Develop文件夹,bin路径如下:

配置scala的系统环境变量,将scala安装的bin目录路径加入到系统环境变量path中:

win+R打开命令窗口输入:scala -verison ,进行检测是否成功配置环境变量:

4.scala插件(版本要与IDEA版本保持一致,下载2019.2.3版本)的下载安装

官网地址:Scala - IntelliJ IDEs Plugin | Marketplace

下载完成后,将下载的压缩包解压到IDEA安装目录下的plugins目录下:

5.maven的下载(我选择的版本是3.5.4)与安装,系统环境变量的配置

官网地址:Maven – Download Apache Maven

将对应版本的压缩包下载到本地,并新建一个文件夹Localwarehouse,用来保存下载的依赖文件

配置maven的系统环境配置,跟以上配置的方法一样,将bin目录地址写入path环境变量:

打开maven安装包下的conf文件夹下面的settings.xml,添加如下代码:

<localRepository>D:\\Develop\\maven\\Localwarehouse</localRepository>

添加如下代码用来配置jdk版本:

   <profile><id>jdk-1.8.0</id><activation><activeByDefault>true</activeByDefault><jdk>1.8.0</jdk></activation><properties><maven.compiler.source>1.8.0</maven.compiler.source><maven.compiler.target>1.8.0</maven.compiler.target><maven.compiler.compilerVersion>1.8.0</maven.compiler.compilerVersion></properties></profile>

二、将maven加载到IDEA中

三、检测scala插件是否在IDEA中已经安装成功

四、用maven新建一个工程项目

五、配置pom.xml文件

1.如果只需要在本地运行spark程序,则只需要添加scala-library、spark-core、spark-sql、spark-streaming等依赖,添加代码如下:

<properties><!-- 声明scala的版本 --><scala.version>2.12.15</scala.version><!-- 声明linux集群搭建的spark版本,如果没有搭建则不用写 --><spark.version>3.2.1</spark.version><!-- 声明linux集群搭建的Hadoop版本 ,如果没有搭建则不用写--><hadoop.version>3.1.4</hadoop.version></properties><dependencies><!--scala--><dependency><groupId>org.scala-lang</groupId><artifactId>scala-library</artifactId><version>${scala.version}</version></dependency><!-- https://mvnrepository.com/artifact/org.apache.spark/spark-core --><dependency><groupId>org.apache.spark</groupId><artifactId>spark-core_2.12</artifactId><version>3.2.1</version></dependency><!-- https://mvnrepository.com/artifact/org.apache.spark/spark-sql --><dependency><groupId>org.apache.spark</groupId><artifactId>spark-sql_2.12</artifactId><version>3.2.1</version></dependency><!-- https://mvnrepository.com/artifact/org.apache.spark/spark-streaming --><dependency><groupId>org.apache.spark</groupId><artifactId>spark-streaming_2.12</artifactId><version>3.2.1</version><scope>provided</scope></dependency></dependencies>

六、新建scala类文件编写代码

当你右键发现无法新建scala类,需要将scala SDK添加到当前项目中。

鼠标点击java文件夹,右键new--->Scala Class

在WordCount文件中编写如下代码:

import org.apache.spark.sql.SparkSession
object WordCount {def main(args: Array[String]): Unit = {val spark = SparkSession.builder().master("local[*]").appName("word count").getOrCreate()val sc = spark.sparkContextval rdd = sc.textFile("data/input/words.txt")val counts = rdd.flatMap(_.split(" ")).map((_,1)).reduceByKey(_+_)counts.collect().foreach(println)println("全部的单词数:"+counts.count())counts.saveAsTextFile("data/output/word-count")}
}

准备好测试文件words.txt,将文件存放在scalaproject-->data-->input-->words.txt

hello me you her
hello me you
hello me
hello

运行WordCount程序

运行结果:

http://www.lryc.cn/news/215520.html

相关文章:

  • 无穷级数例子
  • C++构造函数和析构函数详解
  • MySQL数据库干货_16—— SQL99标准中的查询
  • LLM大语言模型训练中常见的技术:微调与嵌入
  • 每日一练 | 网络工程师软考真题Day47
  • Kafka - 监控工具 Kafka Eagle:实时洞察Kafka集群的利器
  • infercnv hpc东南服务器 .libpath 最终使用monocle2环境安装
  • 【音视频 | Ogg】RFC3533 :Ogg封装格式版本 0(The Ogg Encapsulation Format Version 0)
  • Hadoop时代落幕,开源大数据将何去何从?
  • 作为一名程序员面临哪些挑战?应该如何应对?
  • flink的安装与使用(ubuntu)
  • 容器:软件性能测试的最佳环境
  • 【Qt控件之QMovie】详解
  • Star History 九月开源精选 |开源 GitHub Copilot 替代
  • 【Rabbit MQ】Rabbit MQ 消息的可靠性 —— 生产者和消费者消息的确认,消息的持久化以及消费失败的重试机制
  • C++设计模式_25_Interpreter 解析器
  • 能源化工过程-故障诊断数据集初探-田纳西-伊斯曼过程数据集
  • 【Linux】安装配置解决CentosMobaXterm的使用及Linux常用命令以及命令模式
  • 一台服务器安装两个mysql、重置数据库用于测试使用
  • JS动态转盘可手动设置份数与概率(详细介绍)
  • 在k8s中,etcd有什么作用?
  • conda配置虚拟环境相关记录
  • 数据库的本质永远都不会改变基础语句(第二十二课)
  • Object转List<>,转List<Map<>>
  • React使用富文本CKEditor 5,上传图片并可设置大小
  • 【工具使用】批量修改文件夹的时间操作
  • Android Snackbar
  • 详解API接口如何安全的传输数据(内附商品详情API接口接入方式)
  • 网工内推 | 大专以上,福利待遇好,IE认证优先(云厂商)
  • Python time strptime()和strftime()