Khi tôi chạy hive
, nó hiển thị lỗi sau
[hadoop@a74f90aecdad tmp]$ hive
SLF4J: Class path contains multiple SLF4J bindings.
SLF4J: Found binding in [jar:file:/hive/lib/log4j-slf4j-impl-2.10.0.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: Found binding in [jar:file:/hadoop/share/hadoop/common/lib/slf4j-log4j12-1.7.25.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: See http://www.slf4j.org/codes.html#multiple_bindings for an explanation.
SLF4J: Actual binding is of type [org.apache.logging.slf4j.Log4jLoggerFactory]
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.<init>(JobConf.java:448)
at org.apache.hadoop.hive.conf.HiveConf.initialize(HiveConf.java:5141)
at org.apache.hadoop.hive.conf.HiveConf.<init>(HiveConf.java:5099)
at org.apache.hadoop.hive.common.LogUtils.initHiveLog4jCommon(LogUtils.java:97)
at org.apache.hadoop.hive.common.LogUtils.initHiveLog4j(LogUtils.java:81)
at org.apache.hadoop.hive.cli.CliDriver.run(CliDriver.java:699)
at org.apache.hadoop.hive.cli.CliDriver.main(CliDriver.java:683)
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)
Nó có nghĩa là gì? Có thể hiển thị thêm chi tiết?
com.google.common.base.Preconditions
trong JAR có trong CLASSPATH của nó (giả sử Hive không sử dụng ClassLoader tùy chỉnh ghi đè CLASSPATH) nhưng lớp đó không có phương thức chính xác mà nó có trong thời gian biên dịch.
hive
máy khách béo kế thừa - ví dụ: theo chuỗi các tập lệnh shell gọi tập lệnh shell gọi tập lệnh shell, cho đến khi bạn tìm thấy lệnh thực tếjava -cp <CLASSPATH> etc etc
com.google.common.
gợi ý rằng bạn có một phiên bản không khớp với JAR "ổi" hoặc "protobuf". Có thể một JAR cũ hơn đã có mặt đầu tiên trong CLASSPATH, với phiên bản cũ hơn mà lớpPreconditions
không có phương thứccheckArgument(String,Object)
.