java.lang.NoSuchMethodError和kafka.common.OffsetOutOfRangeException(Spark)
来源:互联网 发布:百度竞价数据分析案例 编辑:程序博客网 时间:2024/06/01 08:15
一、关于 java.lang.NoSuchMethodError这个异常类型,其实如果遇到次数比较多了,大概可以判断是什么样的情况:
比如在有一次在自己电脑上放一个spark的测试环境的时候,报了如下的异常:
遇到这种NoSuchMethodErro(没有这样的方法的异常),差不多就是如下的三种情况:java.lang.NoSuchMethodError:
org.apache.hadoop.hive.conf.HiveConf$ConfVars.getDefaultExpr()Ljava/lang/String;
1、依赖包相互冲突,程序运行的时候不知道运行哪个类?
2、导错包,没有这样的方法?
3、maven项目jar包没下载全,可能由于网络不好等等原因(我就是这个原因,这个原因的可能性比较大)
因此重新刷新了下pom,重新下载了下jar包,就不报这个错了!
二、SparkStreaming报错
Caused by: kafka.common.OffsetOutOfRangeException具体报错:
Caused by: kafka.common.OffsetOutOfRangeException
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:57)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
at java.lang.reflect.Constructor.newInstance(Constructor.java:526)
at java.lang.Class.newInstance(Class.java:374)
at kafka.common.ErrorMapping$.exceptionFor(ErrorMapping.scala:86)
或者:
Exception in thread "main" java.lang.IllegalArgumentException: requirement failed: numRecords must not be negative
at scala.Predef$.require(Predef.scala:233)
第一个问题:
简单来看是因为streaming使用direct方式连接kafka,手动给定的偏移量超出范围,偏移量超出范围会有两种情况,要么是太大,要么是太小。
但是其实我是传入了0(也就是从头开始消费数据),居然还超出范围,应该不可能!后来我想到了,我使用的topic是测试topic,就是说我很久之前是用过的,然后偏移量为0的数据(存在本地磁盘)已经被自动删除掉了!所以当然就超出范围了,那么你可以把偏移量的值设置大点,大到能够够到你现在输入的数据(反正只是测试)
那么实际开发中如果遇到这样的问题,可以通过参数设置,让kafka储存数据时间增长
(1)、直接在配置文件
kafka/config/server.properties
log.retention.hours=24(定义保留日志的小时)
(2)、或者可以在不关闭kafka服务的情况下,直接更改kafka的topic服务的配置:
./kafka-topics.sh --zookeeper zk1:2181 -topic topicname --alter --config retention.ms=86400
(retention.ms该参数单位是毫秒,官网上默认是7days,修改的命令版本不同,可能会有所区别,请以官方为准)
官网地址:http://kafka.apache.org/082/documentation.html
修改完成后重启kafka。
使用zk shell 命令得到解析器所保存的zk_offset
停止spark streaming kafka DirectStream job
发送数据到kafka topic,等待一段时间(超过两分钟)
启动streaming job,复现该异常。
第二个问题:
numRecords must not be negative这个是说传入的偏移量是负数,但是其实我并没有传负数进去。。
不知道为什么,应该是做判断的时候这个数字取值的时候出了问题,所以。。。(有可能是默认值是-1的原因)
- java.lang.NoSuchMethodError和kafka.common.OffsetOutOfRangeException(Spark)
- Spark 与 Kafka 集成出错: Apache Spark: java.lang.NoSuchMethodError
- kafka.common.OffsetOutOfRangeException 问题处理
- Caused by: kafka.common.OffsetOutOfRangeException
- Spark java.lang.NoSuchMethodError: scala.Predef$.refArrayOps
- java.lang.NoSuchFieldError 和 NoSuchMethodError
- java.lang.NoSuchFieldError 和 NoSuchMethodError
- spark streaming kafka OffsetOutOfRangeException 异常分析与解决
- java.lang.NoSuchMethodError: com.google.common.util.concurrent.MoreExecutors
- Kafka 副本OffsetOutOfRangeException
- kafka的OffsetOutOfRangeException
- Kafka 副本OffsetOutOfRangeException
- Spark Q&A : java.lang.NoSuchMethodError: scala.Predef$.ArrowAssoc
- strom和kafka整合报java.lang.ClassNotFoundException: com.google.common.base.Strings异常
- spark一个版本问题引发的血案(java.lang.NoSuchMethodError: org.apache.spark.ui.SparkUI.addStaticHandler)
- java.lang.NoSuchMethodError:解决办法(转)
- java.lang.NoSuchMethodError翻译
- java.lang.NoSuchMethodError
- 深度学习框架Keras学习系列(三):Keras神经网络框架
- vue2+iview+require实现AMD模式下的组件化开发、按需加载
- python使用递归思想处理问题
- BZOJ 4006 管道连接(最小斯坦纳树+状压DP)
- caffe_('delete_net', self.hNet_self);
- java.lang.NoSuchMethodError和kafka.common.OffsetOutOfRangeException(Spark)
- python刷题日记4--Roman to Integer
- 剑指Offer(二)替换空格
- Redis入门实例(Redis+Sprint+maven创建工程)
- javaweb实践项目(2)
- 最容易读进去的深度学习科普贴
- 【Python】numpy中的sum函数的使用
- 黑白无常 -- 蓝桥杯
- CSS详解 display:inline-block的应用