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<Integer> list = new ArrayList<Integer>();
list.add(1); list.add(2); list.add(3);
//内存中获取数据常见rdd
JavaRDD<Integer> rdd = sc.parallelize(list);
//rdd计算
JavaRDD<Integer> 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后也没找到解决方案。
于是寻找度娘,终于看到了该博主的文章解决了我的问题【Spark3.2】io.netty.buffer.PooledByteBufAllocator.<init>(ZIIIIIIZ)V和这位博主遇到的问题是同意类型,但解决方案却不同。
报错如下:
dependencyManagement
Maven 可以通过 dependencyManagement 元素对依赖进行管理,它具有以下 2 大特性:
- 在该元素下声明的依赖不会实际引入到模块中,只有在 dependencies 元素下同样声明了该依赖,才会引入到模块中。
- 该元素能够约束 dependencies 下依赖的使用,即 dependencies 声明的依赖若未指定版本,则使用 dependencyManagement 中指定的版本,否则将覆盖 dependencyManagement 中的版本。
为了避免多次引入造成的冲突问题,将io.netty.buffer
交由dependencyManagement管理。pom如下:
<dependencyManagement>
<dependencies>
<dependency>
<groupId>io.netty</groupId>
<artifactId>netty-buffer</artifactId>
<version>4.1.58.Final</version>
</dependency>
</dependencies>
</dependencyManagement>
java.lang.ClassNotFoundException: com.fasterxml.jackson.databind.util.LookupCache
spring boot中自带jackson没找到是spring boot版本太低了提高一下spring boot版本即可。
使用2.1.8报错提高到2.7.6后就可以了。
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/156198.html