知识目录

  • 二、Hive启动hiveserver2报错🔥
  • 三、HiveServer2启动方式✨
  • 四、Hive执行SQL语句报一大堆日志🍉
  • 五、Hive使用Load加载数据报错🍭
  • 六、Hive执行含Count的SQL语句报错🍉
  • 七、Hive执行SQL语句报/bin/java🍭
  • 八、总结撒花😊

一、写在前面✨

作者:我是初心

二、Hive启动hiveserver2报错🔥

  • 报错内容

java.lang.classnotfoundexception: org.apache.tez.dag.api.tezconfiguration

  • 解决方案

hive-site.xml添加以下配置可以解决。

<property>
    <name>hive.server2.active.passive.ha.enable</name>
    <value>true</value>
</property>

三、HiveServer2启动方式✨

第一种:占用一个Xshell窗口的启动

$HIVE_HOME/bin/hive --service hiveserver2

第二种:也是占用Xshell窗口启动

$HIVE_HOME/bin/hiveserver2

第三种:悬挂启动(推荐,hive.log文件和路径换自己的)

nohup $HIVE_HOME/bin/hiveserver2 >/opt/module/logs/hive_log/hive.log 2>&1 &

启动后会得到一个进程号:

hive insert后没数据 hive insert报错_hadoop

悬挂启动关闭HiveServer2的方式。

首先查询进程号:

ps -ef | grep hive

hive insert后没数据 hive insert报错_hadoop_02

杀死进程号:

kill -15 3475(进程号)

细心的朋友会发现,这个进程号就是我们悬挂启动HiveServer2时显示的进程号,所以,你直接 kill 掉那个进程号,不查询也是可以的。查询是在我们启动HiveServer2之后还执行了很多命令情况下使用。

四、Hive执行SQL语句报一大堆日志🍉

  • 问题详情

在hive-3.1.x版本中,使用hive shell时,会发现在查询命令中夹杂大量的日志信息,严重干扰查询结果显示,特别是强迫症患者,不能忍受。

  • 解决方案

在 Hive 安装目录的 conf 目录下创建出 log4j.properties 日志配置文件,添加如下内容。

log4j.rootLogger=WARN, CA
log4j.appender.CA=org.apache.log4j.ConsoleAppender
log4j.appender.CA.layout=org.apache.log4j.PatternLayout
log4j.appender.CA.layout.ConversionPattern=%-4r [%t] %-5p %c %x - %m%n

五、Hive使用Load加载数据报错🍭

  • 报错内容

Invalid path ''/data/deal_after_taoao.csv'': No files matching path hdfs://mycluster/data/deal_after_taoao.csv

  • 解决方案

命令敲错了,应该用大写写法。Load加载非csv文件也是同理,只要是报这一类错误。

LOAD DATA INPATH '/data/deal_after_taobao.csv' OVERWRITE INTO TABLE taobao.taobao;

六、Hive执行含Count的SQL语句报错🍉

  • 报错内容

[SIGINT handler] ERROR org.apache.hadoop.hive.ql.exec.tez.TezJobExecHelper

java.lang.ClassNotFoundException: org.apache.tez.dag.api.DAG

  • 解决方案

Hive执行含有Count的SQL语句,属于Map和Reduce任务,需要开启Yarn。在yarn-site.xml和mapred-site.xml文件中配置好yarn并启动即可。

启动Yarn:(ResourceManager结点上)

start-yarn.sh

启动历史服务器:(历史服务器结点上的Hadoop目录下,其实也可以不启动,无妨)

bin/mapred --daemon start historyserver

七、Hive执行SQL语句报/bin/java🍭

  • 报错内容

/bin/java: No such file or directory

  • 解决方案

需要在集群中的每个结点上,创建一个/bin/java 的软连接,实际指向 jdk 真实目录。(下面的/opt/module/HA是我的jdk安装路径,换成自己的即可)

ln -s /opt/module/HA/jdk1.8/bin/java /bin/java