java.lang.nosuchmethoderror:org.apache.hive.common.util.shutdownhookmanager.addshutdownhook

vfwfrxfs  于 2021-05-27  发布在  Hadoop
关注(0)|答案(2)|浏览(770)

我想在Kylin身上做个立方体,用Spark做引擎。群集包含以下工具:
操作系统映像:1.0-debian9
apache spark 2.4.4(由1.6.2更改)
apache hadoop 2.7.4版
apache配置单元1.2.1
生成多维数据集时出现以下错误:

java.lang.NoSuchMethodError: org.apache.hive.common.util.ShutdownHookManager.addShutdownHook(Ljava/lang/Runnable;)V
    at org.apache.hive.hcatalog.common.HiveClientCache.createShutdownHook(HiveClientCache.java:221)
    at org.apache.hive.hcatalog.common.HiveClientCache.<init>(HiveClientCache.java:153)
    at org.apache.hive.hcatalog.common.HiveClientCache.<init>(HiveClientCache.java:97)
    at org.apache.hive.hcatalog.common.HCatUtil.getHiveMetastoreClient(HCatUtil.java:553)
    at org.apache.hive.hcatalog.mapreduce.InitializeInput.getInputJobInfo(InitializeInput.java:104)
    at org.apache.hive.hcatalog.mapreduce.InitializeInput.setInput(InitializeInput.java:88)
    at org.apache.hive.hcatalog.mapreduce.HCatInputFormat.setInput(HCatInputFormat.java:95)
    at org.apache.hive.hcatalog.mapreduce.HCatInputFormat.setInput(HCatInputFormat.java:51)
    at org.apache.kylin.source.hive.HiveMRInput$HiveTableInputFormat.configureJob(HiveMRInput.java:80)
    at org.apache.kylin.engine.mr.steps.FactDistinctColumnsJob.setupMapper(FactDistinctColumnsJob.java:126)
    at org.apache.kylin.engine.mr.steps.FactDistinctColumnsJob.run(FactDistinctColumnsJob.java:104)
    at org.apache.kylin.engine.mr.common.MapReduceExecutable.doWork(MapReduceExecutable.java:131)
    at org.apache.kylin.job.execution.AbstractExecutable.execute(AbstractExecutable.java:167)
    at org.apache.kylin.job.execution.DefaultChainedExecutable.doWork(DefaultChainedExecutable.java:71)
    at org.apache.kylin.job.execution.AbstractExecutable.execute(AbstractExecutable.java:167)
    at org.apache.kylin.job.impl.threadpool.DefaultScheduler$JobRunner.run(DefaultScheduler.java:114)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
    at java.lang.Thread.run(Thread.java:748)

我检查了hive和hadoop库jars目录,看看是否有多余的jar,我发现每种类型的jar都有两个版本。例如:hive-common-1.2.1.jar和hive-common.jar。
我试着把他们中的任何一个移动到不同的位置,并试着恢复立方体构建过程。但我也犯了同样的错误。在此方面的任何帮助都将不胜感激。

qq24tv8q

qq24tv8q1#

我把hive版本改成了2.1.0,它对我很有用。我决定通过查看kylin下载页面并依次浏览其他云平台(如aws emr和microsoftazurehdinsight for kylin2.6.4)来安装这个版本的hive。
谢谢,@igor dvorzhak给你宝贵的建议。

7gs2gvoe

7gs2gvoe2#

dataproc不支持这种用例,如果需要使用spark 2.4.4,那么应该使用dataproc 1.4或1.5,而不是spark 1.6.2附带的dataproc 1.0。
除此之外, ShutdownHookManager.addShutdownHook(Ljava/lang/Runnable;)V 方法是在Hive2.3.0中添加的,但spark使用Hive1.2.1的fork,这就是为什么需要使用支持Hive1.2.1的kylin版本。
关于重复jar,无版本 hive-common.jar 不是副本,而是指向版本的符号链接 hive-common-1.2.1.jar . 您可以通过列出它来验证这一点:

$ ls -al /usr/lib/hive/lib/hive-common.jar
lrwxrwxrwx 1 root root 21 Nov  9 09:20 /usr/lib/hive/lib/hive-common.jar -> hive-common-2.3.6.jar

相关问题