java.lang.NoSuchMethodError: io.netty.buffer.PooledByteBufAllocator.(ZIIIIIIZ)V

Java操作spark出现上述错误,如下代码:

import org.apache.spark.api.java.JavaRDD;

import org.apache.spark.api.java.JavaSparkContext;

import java.util.ArrayList;

import java.util.List;

class sparkConnect {

sparkConnect() {

//解决java.io.FileNotFoundException: HADOOP_HOME and hadoop.home.dir are unset

System.setProperty("hadoop.home.dir","D:\\SoftWares\\Apache\\spark-3.3.1-bin-hadoop3");

JavaSparkContext sc = new JavaSparkContext("local", "thisSpark");

List list = new ArrayList();

list.add(1); list.add(2); list.add(3);

//内存中获取数据常见rdd

JavaRDD rdd = sc.parallelize(list);

//rdd计算

JavaRDD listPlus = rdd.map(y->y+5);

System.out.println("list is:" + list);

System.out.println("listPlus is:"+ listPlus);

System.out.println("the relation is list plus five = listPlus");

}

public static void main(String[] args) {

sparkConnect sparkConnect = new sparkConnect();

}

}

这个错误困扰了我一天半,及其头疼,在查看了报错的Netty官方文档https://netty.io/4.1/api/overview-summary.html后也没找到解决方案。

spark开发文档

于是寻找度娘,终于看到了该博主的文章解决了我的问题【Spark3.2】io.netty.buffer.PooledByteBufAllocator.<init>(ZIIIIIIZ)V和这位博主遇到的问题是同意类型,但解决方案却不同。

报错如下:

dependencyManagement

Maven 可以通过 dependencyManagement 元素对依赖进行管理,它具有以下 2 大特性:

在该元素下声明的依赖不会实际引入到模块中,只有在 dependencies 元素下同样声明了该依赖,才会引入到模块中。该元素能够约束 dependencies 下依赖的使用,即 dependencies 声明的依赖若未指定版本,则使用 dependencyManagement 中指定的版本,否则将覆盖 dependencyManagement 中的版本。

为了避免多次引入造成的冲突问题,将io.netty.buffer交由dependencyManagement管理。pom如下:

io.netty

netty-buffer

4.1.58.Final

java.lang.ClassNotFoundException: com.fasterxml.jackson.databind.util.LookupCache

spring boot中自带jackson没找到是spring boot版本太低了提高一下spring boot版本即可。

使用2.1.8报错提高到2.7.6后就可以了。

相关阅读

评论可见,请评论后查看内容,谢谢!!!评论后请刷新页面。