hive报错java.lang.NoSuchMethodError: com.google.common.base.Preconditions.checkArgument

hive报错java.lang.NoSuchMethodError: com.google.common.base.Preconditions.checkArgument

  • 1. 添加依赖
  • 2. 降低MySQL connector的版本

Exception in thread "main" java.lang.NoSuchMethodError: com.google.common.base.Preconditions.checkArgument(ZLjava/lang/String;Ljava/lang/Object;)V
	at org.apache.hadoop.conf.Configuration.set(Configuration.java:1357)
	at org.apache.hadoop.conf.Configuration.set(Configuration.java:1338)
	at org.apache.hadoop.mapred.JobConf.setJar(JobConf.java:536)
	at org.apache.hadoop.mapred.JobConf.setJarByClass(JobConf.java:554)
	at org.apache.hadoop.mapred.JobConf.(JobConf.java:448)
	at org.apache.hadoop.hive.conf.HiveConf.initialize(HiveConf.java:5141)
	at org.apache.hadoop.hive.conf.HiveConf.(HiveConf.java:5104)
	at org.apache.hive.beeline.HiveSchemaTool.(HiveSchemaTool.java:96)
	at org.apache.hive.beeline.HiveSchemaTool.main(HiveSchemaTool.java:1473)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.lang.reflect.Method.invoke(Method.java:498)
	at org.apache.hadoop.util.RunJar.run(RunJar.java:323)
	at org.apache.hadoop.util.RunJar.main(RunJar.java:236)

找不到方法,因为MySQL connectoe和hive库版本不一致导致的,没有相应的接口,有一下两种解决方案:

1. 添加依赖

  1. 如果是maven项目,在maven添加依赖(也可以方便找jar包)


    com.google.guava
    guava
    28.1-jre
 

    org.apache.httpcomponents
    httpcore
    4.4.11

  1. 如果是运行环境,在hive文件夹的lib中添加jar包
          如果有maven依赖,可以直接在本地仓库直接找到对应的jar包,即guava-28.1-jre.jar和httpcore-4.4.11.jar;如果maven环境,在网上下载相应的jar包即可。

2. 降低MySQL connector的版本

       这个本人没有尝试过,在网上没有相应的例子,目测connector版本太高了,调用了更新的接口,hive自带的lib中没有,就报错了。

你可能感兴趣的:(大数据学习)