java.lang.NoSuchMethodError:
org.apache.hadoop.hive.conf.HiveConf$ConfVars.getDefaultExpr()Ljava/lang/String;

遇到这种NoSuchMethodErro(没有这样的方法的异常),差不多就是如下的三种情况:

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)

第一个问题:

官网地址: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这个异常类型,其实如果遇到次数比较多了,大概可以判断是什么样的情况:比如在有一次在自己电脑上放一个spark的测试环境的时候,报了如下的异常: java.lang.NoSuchMethodError:org.apache.hadoop.hive.conf.HiveConf$ConfVars.getDef SLF4J: Failed to load class "org.slf4j.impl.Static Log g er Bind er ". SLF4J: Defaulting to no-op er ation (NOP) log g er implementation SLF4J: See http://www.slf4j.org/codes.html#Stat...
ER ROR [ Kafka S er v er id=1] Fatal er ror during Kafka S er v er startup. Prepare to shutdown ( kafka .s er v er . Kafka S er v er ) java . lan g. NoSuchMethodError : org.apache.zookeep er .ZooKeep er .multi(L java / lan g/It er able;L...
自从把 spark 从1.3升级到1.6之后, kafka Streaming相关问题频出。最近又遇到了一个。  job中使用 Kafka DirectStream 读取topic中数据,然后做处理。其中有个测试job,停止了几天,再次启动时爆出了 kafka . common . Offset OutO f Range Exception 。下文记录下异常分析与解决过程。 从字面意思上,说是 kafka top...
1、报错信息: org.apache. kafka .clients.con sum er . Offset OutO f Range Exception : Offset s out of range with no configured re set policy for partitions: {qukan_ log _v3-198=2289560518} 报错原因:当消费者消费 offset 大于或小于当前 kafka 集...
java . lan g. nosuchmethoderror Java 程序开发中一种常见的运行时错误。这种错误的出现通常是因为在代码中调用了一个不存在的方法或构造函数。 出现 java . lan g. nosuchmethoderror 通常是因为在代码的某个地方使用了一个过期的或不存在的方法或构造函数。这种错误通常是由如下几种情况所导致的: 1. 代码中调用的方法或构造函数的签名与实际的方法或构造函数的签名不匹配。 2. 运行环境中没有找到期望的方法或构造函数。 3. 静态代码块中出现了未处理的异常,导致类无法被正确初始化。 4. 类文件版本不一致。 如果出现了 java . lan g. nosuchmethoderror 错误,我们应该首先检查代码中的调用语句,看看是否与实际的方法或构造函数存在差异。如果确定调用方式正确,那么我们可以检查运行环境,确保所需的方法或构造函数已经存在于运行环境中。另外,我们也可以考虑在静态代码块中添加异常处理来避免这种错误的发生。如果出现了类文件版本不一致的情况,我们需要重新编译代码并重新部署运行环境。