前提条件:

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

Spark 初始

CentOS 7 安装Hadoop 3 单机版

SpringBoot 2 集成Spark 3

pom.xml

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">

SpringBootCase

org.example

1.0-SNAPSHOT

4.0.0

SpringBoot-Spark3

8

8

org.apache.spark

spark-core_2.12

3.2.0

netty-all

io.netty

io.netty

netty-all

4.1.58.Final

配置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 data = context.textFile(logFile).cache();

long nums = data.filter(new Function() {

@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

 4. 把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  版本。

精彩文章

评论可见,请评论后查看内容,谢谢!!!
 您阅读本篇文章共花了: