SpringBoot 2 集成Spark 3

前提条件:

运行环境:Hadoop 3.* + Spark 3.* ,如果还未安装相关环境,请参考:

Spark 初始

CentOS 7 安装Hadoop 3 单机版

SpringBoot 2 集成Spark 3

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">
    <parent>
        <artifactId>SpringBootCase</artifactId>
        <groupId>org.example</groupId>
        <version>1.0-SNAPSHOT</version>
    </parent>
    <modelVersion>4.0.0</modelVersion>

    <artifactId>SpringBoot-Spark3</artifactId>

    <properties>
        <maven.compiler.source>8</maven.compiler.source>
        <maven.compiler.target>8</maven.compiler.target>
    </properties>

    <dependencies>
        <dependency>
            <groupId>org.apache.spark</groupId>
            <artifactId>spark-core_2.12</artifactId>
            <version>3.2.0</version>
            <exclusions>
                <exclusion>
                    <artifactId>netty-all</artifactId>
                    <groupId>io.netty</groupId>
                </exclusion>
            </exclusions>
        </dependency>
        <dependency>
            <groupId>io.netty</groupId>
            <artifactId>netty-all</artifactId>
            <version>4.1.58.Final</version>
        </dependency>

    </dependencies>
</project>

配置application.properties

无

核心代码

复制代码
package cn.zzg.spark.test;

import org.apache.spark.SparkConf;
import org.apache.spark.api.java.JavaRDD;
import org.apache.spark.api.java.JavaSparkContext;
import org.apache.spark.api.java.function.Function;

public class SparkTest {
    public static void main(String[] args) {
        String logFile = "hdfs://192.168.43.11:9000/README.md";
        SparkConf conf = new SparkConf().setAppName("Spark 应用").setMaster("spark://192.168.43.11:7077");

        JavaSparkContext context = new JavaSparkContext(conf);
        JavaRDD<String> data = context.textFile(logFile).cache();
        long nums = data.filter(new Function<String, Boolean>() {
            @Override
            public Boolean call(String s) throws Exception {
                return s.contains("a");
            }
        }).count();
        System.out.println("包含字母a总数为:" + nums);

    }
}

SpringBoot 2 集成Spark 3 遇到的问题

问题一:java.io.FileNotFoundException: HADOOP_HOME and hadoop.home.dir are unset

造成此类 问题原因:本地环境没有设置 HADOOP_HOME 和 hadoop.home.dir 两项。

解决办法:

1.下载winutils文件

GitHub地址:winutils

点击绿色的Code按钮,再选择Download Zip下载

2.选择版本

如果没有和你版本一致的文件夹,就选择和你版本最相近的,因为我的Hadoop版本是3.2.2版本,所以我选择的是hadoop-3.0.0

3.配置环境变量

配置系统环境变量:

新增 变量名:HADOOP_HOME 变量值:就是你上面选择的hadoop版本文件夹的位置地址

在 变量名:path 中新增 变量值:%HADOOP_HOME%\bin

  1. 把hadoop.dll放到C:/windows/system32文件夹下

拷贝bin文件夹下的hadoop.dll文件

复制进C:/windows/system32文件夹下

6.重启IDEA,再次运行代码,成功。

问题二:java.lang.NoSuchMethodError: io.netty.buffer.PooledByteBufAllocator.<init>(ZIIIIIIZ)

造成此类问题原因:spark-core 依赖的Netty 版本过低,导致相关类方法缺失。

解决办法:移除spark-core 中依赖的netty 包,重新添加netty-all 版本。

相关推荐
其实防守也摸鱼13 小时前
个人学习 Pwn 思路:从基础到漏洞利用的进阶路径
大数据·前端·人工智能·chrome·算法·安全·网络安全
美林数据Tempodata14 小时前
高职大数据技术专业升级的六个落地样本:从产业链需求库到实训室数据链路
大数据·人工智能·数字化转型·产教融合·ai教育
跨境卫士苏苏15 小时前
TikTokShop关联账户认定指引更新跨境代运营团队需要注意哪些管理责任
大数据·人工智能·市场营销·跨境电商·营销策略
迅易科技16 小时前
数据质量治理:从异常告警走向自动化根因诊断
大数据
组工部管理能手李哥16 小时前
一次政务知识库体验:AI回答之外,我更在意那行引用来源
大数据·人工智能·大模型·政务
GrowingIO技术社区16 小时前
SaaS与私有化部署怎么比较?责任、集成与成本
大数据·数据挖掘·产品
GrowingIO技术社区16 小时前
CDP项目如何评估?从业务问题到能力测试
大数据·数据分析
m0_7156744316 小时前
政务泛监测体系能力排行:AI 重塑监测边界,治理的颗粒度革命
大数据·网络·人工智能·安全·网络安全·政务
GrowingIO技术社区18 小时前
多端用户身份怎么统一?OneID规则与验收清单
大数据·数据挖掘·数据分析
躺柒18 小时前
读数据安全架构设计与实践20安全政策文件体系(上)
大数据·人工智能·安全·数据安全·安全架构·安全体系