ToB企服应用市场:ToB评测及商务社交产业平台
标题:
【spark学习】 spring boot 整合 spark
[打印本页]
作者:
数据人与超自然意识
时间:
2025-1-3 11:26
标题:
【spark学习】 spring boot 整合 spark
阐明
本例子是使用java语言实现的spark学习的案例笔记,整合springboot等干系框架。
使用当地算力进行计算。不需要安装hadoop。
主要用于在window体系下的开发学习。
环境
jdk 1.8
springboot 2.7.1
windows 体系
安装 winutils
下载所在: https://github.com/steveloughran/winutils
大概关注微信公众号:
张家的小伙子
,复兴关键字:
winutils
来获取网盘下载所在.
下载完成后,解压出来到某个路径下。此处我解压到
G:\hadoop\
下
注意
:此处的所在在以下的代码中使用到
解压得到以下结构的目次.以下目次对应的是各个版本的hadoop的bin目次。此处是使用的是3.0.0版本。
在pom.xml中导入依赖
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.7.1</version>
</parent>
<groupId>org.example</groupId>
<artifactId>SpringBootSparkDemo</artifactId>
<version>1.0-SNAPSHOT</version>
<properties>
<java.version>8</java.version>
<maven.compiler.source>8</maven.compiler.source>
<maven.compiler.target>8</maven.compiler.target>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<fastjson2.version>2.0.9</fastjson2.version>
<lombok.version>1.18.24</lombok.version>
<spring-boot-starter-test.version>3.3.5</spring-boot-starter-test.version>
<spring-boot-starter.version>2.7.1</spring-boot-starter.version>
<spark-core.version>3.5.3</spark-core.version>
<spark-sql.version>3.5.3</spark-sql.version>
<janino.version>3.1.12</janino.version>
<junit.version>4.13.2</junit.version>
</properties>
<dependencies>
<!-- fastjson2 -->
<dependency>
<groupId>com.alibaba.fastjson2</groupId>
<artifactId>fastjson2</artifactId>
<version>${fastjson2.version}</version>
</dependency>
<!-- lombok -->
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>${lombok.version}</version>
</dependency>
<!--spring-boot-starter-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter</artifactId>
<version>${spring-boot-starter.version}</version>
</dependency>
<!--spark start-->
<dependency>
<groupId>org.apache.spark</groupId>
<artifactId>spark-core_2.13</artifactId>
<version>${spark-core.version}</version>
</dependency>
<dependency>
<groupId>org.apache.spark</groupId>
<artifactId>spark-sql_2.13</artifactId>
<version>${spark-sql.version}</version>
</dependency>
<dependency>
<groupId>org.codehaus.janino</groupId>
<artifactId>janino</artifactId>
<version>${janino.version}</version>
</dependency>
<!--spark end-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<version>${spring-boot-starter-test.version}</version>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>${junit.version}</version>
<scope>test</scope>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.8.1</version>
<configuration>
<source>1.8</source>
<target>1.8</target>
<encoding>UTF-8</encoding>
</configuration>
</plugin>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<configuration>
<includeSystemScope>true</includeSystemScope>
<excludes>
<exclude>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
</exclude>
</excludes>
</configuration>
</plugin>
</plugins>
</build>
</project>
复制代码
创建SparkConfig类
此类主要用于声明spark的配置,包罗spark的运行模式,spark的运行环境等。
import org.apache.spark.SparkConf;
import org.apache.spark.api.java.JavaSparkContext;
import org.apache.spark.sql.SparkSession;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
/**
* spark配置类
*/
@Configuration
public class SparkConfig {
// 从配置文件中注入Spark应用的名称
@Value("${spark.app.name}")
private String appName;
// 从配置文件中注入Spark master的URL
@Value("${spark.master.url}")
private String masterUrl;
/**
* 配置SparkConf对象,声明Spark应用的运行模式和运行环境
* @return SparkConf 返回spark配置对象
*/
@Bean
public SparkConf sparkConf() {
// 在步骤:准备hadoop环境 中方案2的地址,可以根据自己电脑的实际情况修改。此处使用的是hadoop-3.0.0的版本。
System.setProperty("hadoop.home.dir", "G:\\hadoop\\winutils-master\\hadoop-3.0.0");
// 创建SparkConf对象
return new SparkConf()
.setAppName(appName)
.setMaster(masterUrl);
}
/**
* JavaSparkContext 是 Apache Spark 提供的一个类,用于创建和管理 Spark 上下文。
* 它是 Spark 应用程序的入口点,提供了与 Spark 集群交互的能力
* @return
*/
@Bean
public JavaSparkContext sparkContext() {
return new JavaSparkContext(sparkConf());
}
/**
* SparkSession 是 Apache Spark 2.x 版本中引入的一个统一的入口点,用于创建 DataFrame、Dataset 和 SQL 查询。
* 它封装了 Spark 的各种上下文(如 SparkContext、SQLContext 等)
*/
@Bean
public SparkSession sparkSession() {
return SparkSession.builder().sparkContext(sparkContext().sc()).getOrCreate();
}
}
复制代码
配置参数
在application.yml文件中添加如下配置:
# spark相关配置
spark:
# spark应用配置
app:
# 应用名称
name: sparkDemo
# spark master主节点配置
master:
# 主节点运行模式配置,可选值:local、yarn、mesos、k8s
# 此处使用本地模式
url: local[*]
# 日志配置
logging:
# 日志级别
level:
# 根日志级别。 off:关闭springboot的日志,本地学习时关闭后可以更清楚查看spark的日志输出
root: off
复制代码
测试整合效果
创建一个定时使命类,用于测试整合是否乐成。
[code][/code] 输出词频统计效果如下图。阐明已经乐成整合:
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
欢迎光临 ToB企服应用市场:ToB评测及商务社交产业平台 (https://dis.qidao123.com/)
Powered by Discuz! X3.4