工作中遇到的hive常见报错及问题_hivesql常见报错-程序员宅基地

技术标签: hive  hadoop  big data  

1,执行#hive命令进入Hive CLI时报如下错误:

Exception in thread "main" java.lang.RuntimeException: java.lang.RuntimeException: Unable to instantiate org.apache.hadoop.hive.ql.metadata.SessionHiveMetaStoreClient
        at org.apache.hadoop.hive.ql.session.SessionState.start(SessionState.java:444)
        at org.apache.hadoop.hive.cli.CliDriver.run(CliDriver.java:672)
        at org.apache.hadoop.hive.cli.CliDriver.main(CliDriver.java:616)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
        at java.lang.reflect.Method.invoke(Method.java:597)
        at org.apache.hadoop.util.RunJar.run(RunJar.java:221)
        at org.apache.hadoop.util.RunJar.main(RunJar.java:136)
Caused by: java.lang.RuntimeException: Unable to instantiate org.apache.hadoop.hive.ql.metadata.SessionHiveMetaStoreClient

原因:因为没有正常启动Hive 的 Metastore Server服务进程。 
解决方法:启动Hive 的 Metastore Server服务进程,执行如下命令:

FAILED: Execution Error, return code 1 from org.apache.hadoop.hive.ql.exec.DDLTask. MetaException(message:javax.jdo.JDODataStoreException: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'OPTION SQL_SELECT_LIMIT=DEFAULT' at line 1
        at org.datanucleus.api.jdo.NucleusJDOHelper.getJDOExceptionForNucleusException(NucleusJDOHelper.java:451)
        at org.datanucleus.api.jdo.JDOPersistenceManager.getDataStoreConnection(JDOPersistenceManager.java:2259)
        at org.apache.hadoop.hive.metastore.MetaStoreDirectSql.trySetAnsiQuotesForMysql(MetaStoreDirectSql.java:166)

注:碰到上述问题执行:--service metastore后报版本不匹配问题

解决方式:

把mysql-connector-java-5.0.3-bin.jar换成mysql-connector-java-5.1.34-bin.jar,问题解决。

或者直接进入mysql直接修改VERSION表即可。

2,执行#hive命令进入Hive CLI时报如下错误:

  1. FAILED: Execution Error, return code 1 from org.apache.hadoop.hive.ql.exec.DDLTask. MetaException(message:javax.jdo.JDODataStoreException: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'OPTION SQL_SELECT_LIMIT=DEFAULT' at line 1

  2. at org.datanucleus.api.jdo.NucleusJDOHelper.getJDOExceptionForNucleusException(NucleusJDOHelper.java:451)

  3. at org.datanucleus.api.jdo.JDOPersistenceManager.getDataStoreConnection(JDOPersistenceManager.java:2259)

  4. at org.apache.hadoop.hive.metastore.MetaStoreDirectSql.trySetAnsiQuotesForMysql(MetaStoreDirectSql.java:166)

原因:可能是因为Hive连接Mysql的JDBC驱动版本有问题。Mysql版本是5.6.23,用的JDBC驱动是mysql-connector-java-5.0.3-bin.jar。 
解决方法:把mysql-connector-java-5.0.3-bin.jar换成mysql-connector-java-5.1.34-bin.jar,问题解决。

3,执行#hive命令进入Hive CLI时报如下错误: 
在hive1.1版本会有如下错:

  1. # hive

  2. ......

  3. Exception in thread "main" java.lang.RuntimeException: java.lang.IllegalArgumentException: java.net.URISyntaxException: Relative path in absolute URI: ${system:java.io.tmpdir%7D/$%7Bsystem:user.name%7D

  4. at org.apache.hadoop.hive.ql.session.SessionState.start(SessionState.java:472)

  5. at org.apache.hadoop.hive.cli.CliDriver.run(CliDriver.java:671)

  6. at org.apache.hadoop.hive.cli.CliDriver.main(CliDriver.java:615)

  7. at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)

  8. at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)

  9. at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)

  10. at java.lang.reflect.Method.invoke(Method.java:606)

  11. at org.apache.hadoop.util.RunJar.run(RunJar.java:221)

  12. at org.apache.hadoop.util.RunJar.main(RunJar.java:136)

  13. Caused by: java.lang.IllegalArgumentException: java.net.URISyntaxException: Relative path in absolute URI: ${system:java.io.tmpdir%7D/$%7Bsystem:user.name%7D

  14. at org.apache.hadoop.fs.Path.initialize(Path.java:206)

  15. at org.apache.hadoop.fs.Path.<init>(Path.java:172)

  16. at org.apache.hadoop.hive.ql.session.SessionState.createSessionDirs(SessionState.java:515)

  17. at org.apache.hadoop.hive.ql.session.SessionState.start(SessionState.java:458)

  18. ... 8 more

  19. Caused by: java.net.URISyntaxException: Relative path in absolute URI: ${system:java.io.tmpdir%7D/$%7Bsystem:user.name%7D

  20. at java.net.URI.checkPath(URI.java:1804)

  21. at java.net.URI.<init>(URI.java:752)

  22. at org.apache.hadoop.fs.Path.initialize(Path.java:203)

  23. ... 11 more

原因:system:java.io.tmpdir 和system:user.name提示需要使用绝对路径

Caused by: java.lang.IllegalArgumentException: java.net.URISyntaxException: Relative path in absolute URI: ${system:java.io.tmpdir%7D/$%7Bsystem:user.name%7D

解决方法: 
将conf/hive-site.xml中所有的system:java.io.tmpdir 和system:user.name都换成绝对路径。 
Hive-1.1.0版本中有以下四处:

  1. <property>

  2. <name>hive.exec.local.scratchdir</name>

  3. <value>${system:java.io.tmpdir}/${system:user.name}</value>

  4. <description>Local scratch space for Hive jobs</description>

  5. </property>

  6. <property>

  7. <name>hive.downloaded.resources.dir</name>

  8. <value>${system:java.io.tmpdir}/${hive.session.id}_resources</value>

  9. <description>Temporary local directory for added resources in the remote file system.</description>

  10. </property>

  11. <property>

  12. <name>hive.querylog.location</name>

  13. <value>${system:java.io.tmpdir}/${system:user.name}</value>

  14. <description>Location of Hive run time structured log file</description>

  15. </property>

  16. <property>

  17. <name>hive.server2.logging.operation.log.location</name>

  18. <value>${system:java.io.tmpdir}/${system:user.name}/operation_logs</value>

  19. <description>Top level directory where operation logs are stored if logging functionality is enabled</description>

  20. </property>

配置之后如下:

  1. <property>

  2. <name>hive.exec.local.scratchdir</name>

  3. <value>/root/hadoop/apache-hive-1.1.0-bin/iotmp/hive</value>

  4. <description>Local scratch space for Hive jobs</description>

  5. </property>

  6. <property>

  7. <name>hive.downloaded.resources.dir</name>

  8. <value>/root/hadoop/apache-hive-1.1.0-bin/iotmp/${hive.session.id}_resources</value>

  9. <description>Temporary local directory for added resources in the remote file system.</description>

  10. </property>

  11. <property>

  12. <name>hive.querylog.location</name>

  13. <value>/root/hadoop/apache-hive-1.1.0-bin/iotmp/hive</value>

  14. <description>Location of Hive run time structured log file</description>

  15. </property>

  16. <property>

  17. <name>hive.server2.logging.operation.log.location</name>

  18. <value>/root/hadoop/apache-hive-1.1.0-bin/iotmp/hive/operation_logs</value>

  19. <description>Top level directory where operation logs are stored if logging functionality is enabled</description>

  20. </property>

4,执行#hive命令进入Hive CLI时报如下错误: 
在hive1.1版本,对应的Hadoop版本是2.6。启动Hive时有如下错:

  1. # hive

  2. ......

  3. [ERROR] Terminal initialization failed; falling back to unsupported

  4. java.lang.IncompatibleClassChangeError: Found class jline.Terminal, but interface was expected

  5. at jline.TerminalFactory.create(TerminalFactory.java:101)

  6. at jline.TerminalFactory.get(TerminalFactory.java:158)

  7. at jline.console.ConsoleReader.<init>(ConsoleReader.java:229)

  8. at jline.console.ConsoleReader.<init>(ConsoleReader.java:221)

  9. at jline.console.ConsoleReader.<init>(ConsoleReader.java:209)

  10. at org.apache.hadoop.hive.cli.CliDriver.getConsoleReader(CliDriver.java:773)

  11. at org.apache.hadoop.hive.cli.CliDriver.executeDriver(CliDriver.java:715)

  12. at org.apache.hadoop.hive.cli.CliDriver.run(CliDriver.java:675)

  13. at org.apache.hadoop.hive.cli.CliDriver.main(CliDriver.java:615)

  14. at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)

  15. at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)

  16. at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)

  17. at java.lang.reflect.Method.invoke(Method.java:606)

  18. at org.apache.hadoop.util.RunJar.run(RunJar.java:221)

  19. at org.apache.hadoop.util.RunJar.main(RunJar.java:136)

原因:因为在hadoop目录下存在老版本jline: 
/root/hadoop/hadoop-2.6.0/share/hadoop/yarn/lib/jline-0.9.94.jar

解决方法:将hive下的新版本jline的JAR包拷贝到hadoop下:

#cp /hive/apache-hive-1.1.0-bin/lib/jline-2.12.jar /root/hadoop/hadoop-2.6.0/share/hadoop/yarn/lib/
  1. /root/hadoop/hadoop-2.6.0/share/hadoop/yarn/lib

  2. -rw-r--r--. 1 20000 20000 87325 Nov 14 05:20 jline-0.9.94.jar.bak

  3. -rw-r--r--. 1 root root 213854 Apr 2 08:55 jline-2.12.jar

Hive CLI可以成功启动。

5,在Hive中执行SQL时,报如下错:

  1. Diagnostic Messages for this Task:

  2. Container launch failed for container_1431310046688_0001_02_000013 : org.apache.hadoop.yarn.exceptions.YarnException: Unauthorized request to start container.

  3. This token is expired. current time is 1431311178863 found 1431311136701

  4. at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)

原因:namenode和datanode的时间不一致,需要保证namenode和datanode的时间一致。

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_42223833/article/details/120767512

智能推荐

【Testops学习积累之二】Jenkins Pipeline中Git打包、Sonar扫描静态代码实践操作过程记录_jenkis 做testops-程序员宅基地

文章浏览阅读391次。步骤1:在jenkins服务器中,下载git和部署,并在jenkins中安装git插件,并在系统管理--全局工具配置中配置git路径(如下图)步骤2:jenkins服务器中,安装和部署mysql(自行百度,也可以采用docker 容器部署),并启动参考资料:https://www.cnblogs.com/yoyotl/p/5752437.html步骤3:docker 安..._jenkis 做testops

使用TensorFlow实现余弦距离/欧氏距离(Euclidean distance)以及Attention矩阵的计算_tensorflow.keras里计算欧式距离的函数-程序员宅基地

文章浏览阅读3.4w次,点赞4次,收藏24次。最近在使用tensorflow完成句子相似度建模等任务时常常会用到各种距离的计算,而且有很多论文提出了Attention机制,所以这里就介绍一下如何使用tensorflow实现上述各种功能。 这里首先假定我们的输入是两个四维的Tensor,然后我们需要计算的是其中某个维度的距离。比如说我们的输入是batch个句子,句长是sent_len, 每个词被表示成embed_size的词向量。所以我们的输入_tensorflow.keras里计算欧式距离的函数

点阵汉字的字模读取与显示_点,则其显示字模是______。a-程序员宅基地

文章浏览阅读273次。点阵汉字的字模读取与显示嵌入式第8周作业2_点,则其显示字模是______。a

【EPS32S3学习笔记】ESP32+OPENCV+OV2640+LVGL_esp32 opencv-程序员宅基地

文章浏览阅读4.1k次,点赞4次,收藏31次。前面已经完成了ESP32S3+LVGL+OV2640的工作,下一步就可以在这个基础上去增加OPENCV的模块了。提示:以下是本篇文章正文内容,下面案例可供参考。_esp32 opencv

计算机键盘无法使用怎么处理,为什么键盘不能用 键盘不能用怎么办-程序员宅基地

文章浏览阅读1.6w次。随着技术的进步,现在办公大多都是通过电脑完成的,在使用电脑的过程中,键盘和鼠标是最容易出现故障的外接设备。今天我们就来给大家分析最常见的键盘失灵后该怎么办。下面我们就先来看看为什么键盘不能用,该怎么维修吧,希望我们提供的维修检查方法能够帮助您尽快解决问题。【为什么键盘不能用】一、键盘连接线键盘不能用很多用户日常使用中,会发现突然之间键盘按键全部无效,键盘状态指示灯伴随按键失灵同时熄灭。用户在移动键..._键盘无法使用

自定义 Python 折线图颜色_python折线图分段改变颜色-程序员宅基地

文章浏览阅读858次。自定义 Python 折线图颜色折线图是一种常见的数据可视化方式,用于展示数据随时间或其他变量的变化趋势。在 Python 中,可以使用 Plotly 库来绘制折线图,并自定义颜色以增加图表的可读性和美观度。Plotly 支持两种类型的颜色:离散颜色和连续颜色。离散颜色用于分类数据,而连续颜色用于数值数据。接下来,我们将演示如何使用两种类型的颜色来自定义折线图。_python折线图分段改变颜色

随便推点

2023年前端面试题-Html篇-程序员宅基地

文章浏览阅读60次。1、前端如何选择图片的格式?2、解释一下 浏览器的标准模式和怪异模式 (混杂模式)3、简述从输入网址到页面显示的整个过程

EC_Class_ec class-程序员宅基地

文章浏览阅读1.4k次。// EC_Class.h: interface for the EC_Class class.////////////////////////////////////////////////////////////////////////#if !defined(AFX_EC_CLASS_H__360A35F7_DB6B_4390_810E_FFEF59954245__INC_ec class

寄存器r0 - r12 是什么?-程序员宅基地

寄存器r0 - r12是ARM处理器中用于存储临时数据、函数参数和返回值的通用寄存器,都是32位的。r13-r15则分别用于存储栈指针(SP)、链接寄存器(LR)和程序计数器(PC)。

小米6无人直播刷机包教程_小米6直播刷机包-程序员宅基地

文章浏览阅读2.9k次。首先第一步我们需要解锁小米6的BL锁权限。解锁完以后,先刷入官网包。如图:这里一定要注意。选择第一个全部删除!选择第一个全部删除!第一个全部删除!刷好官方底层包以后进入系统,直接关机,进入FASTBOOT模式。这时候我们打开刷入Rec。刷入完以后他会自动跳转 这时候我们数据线链接上电脑,导入虚拟包。双清-刷入。刷完虚拟包以后,一定要开机,开机能正常的进入Lineage OS 原生系统后,界面跟小米系统是很有区别的,一眼即可辨之!能开机后,我们关机,关机按住音量上加开机键,进入recove_小米6直播刷机包

SpringCloudConfig配置完成后客户端读取不到配置中心的配置文件_配置中心读取不到文件-程序员宅基地

文章浏览阅读3.3k次。有可能是客户端启动类上使用的是 @EnableEurekaClient注解,可以尝试改成@EnableDiscoveryClient/** * 开启eureka客户端功能 *///@EnableEurekaClient/** * @EnableEurekaClient和@EnableDiscoveryClient都让注册中心能够发现,扫描到该服务。 * 不同点:@EnableEurekaClient只适用于Eureka作为注册中心,@EnableDiscoveryClient 可以是其_配置中心读取不到文件

RedHat7.6安装11gRAC+应用最新的PSU_redhat 7.6 rac-程序员宅基地

文章浏览阅读1.1k次。两个机器的系统初始化(略)参考https://blog.csdn.net/sudahai102448567/article/details/119611507一、安装Grid1.安装软件包yum install -y binutils* compat-libcap1 compat-libstdc* gcc* gcc-c++* glibc* ksh* libgcc* libstdc++* libaio* make* sysstat* elfutils-libelf-devel* xterm s._redhat 7.6 rac

推荐文章

热门文章

相关标签