从零配置hive+案例练习+常见问题解决方法

文章目录

  • 前期准备
  • 配置
  • 启动不成功,这里有个坑,下面是问题描述和解决办法
  • 使用过程,还有一个坑,下面是问题描述和解决办法
  • MySQL存放元数据实现多hive客户端
  • 多窗口启动Hive测试
  • 小例子
  • 附加

前期准备

上传hive包(已上传资源包)
解压到/opt/module/下

tar -zxvf apache-hive-3.1.2-bin.tar.gz -C /opt/module/

修改解压后的名字

mv apache-hive-3.1.2-bin/ hive

从零配置hive+案例练习+常见问题解决方法_第1张图片

配置

进入到/opt/module/hive/conf

cd /opt/module/hive/conf

从零配置hive+案例练习+常见问题解决方法_第2张图片
修改标注的文件名

mv hive-env.sh.template hive-env.sh

从零配置hive+案例练习+常见问题解决方法_第3张图片

 vi hive-env.sh

添加以下这两个配置(Hadoop路径和hive路径,自己灵活改动)
从零配置hive+案例练习+常见问题解决方法_第4张图片
配置好启动HDFS

start-dfs.sh

先查看HDFS文件系统现有目录

hadoop fs -lsr /

在这里插入图片描述

在HDFS上创建/tmp和/user/hive/warehouse两个目录并修改他们的同组权限可写

hadoop fs -mkdir -p /user/hive/warehouse
hadoop fs -mkdir /tmp

从零配置hive+案例练习+常见问题解决方法_第5张图片
修改权限

hadoop fs -chmod 777 /user/hive/warehouse

在这里插入图片描述

hadoop fs -chmod 777 /tmp

在这里插入图片描述
启动hive

cd /opt/module/hive
bin/hive

启动不成功,这里有个坑,下面是问题描述和解决办法

在Hadoop3.2.2中安装hive3.1.2时,会出现版本不兼容的情况,报错如下:
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:1380)

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

原因:
hadoop和hive的两个guava.jar版本不一致
两个位置分别位于下面两个目录:

  • /opt/module/hive/lib
  • /opt/module/hadoop-3.2.2/share/hadoop/common/lib

解决办法:
删除低版本的那个,将高版本的复制到低版本目录下
这种情况是Hadoop3.2.2中的guava-27.0-jre.jar版本高于Hive中的19.0版本了,只需删除hive中的19.0版本的guava.jar,让后吧Hadoop中guaca-27.0-jre.jar复制过来即可。

cp guava-27.0-jre.jar /opt/module/hive/lib/

从零配置hive+案例练习+常见问题解决方法_第6张图片

使用过程,还有一个坑,下面是问题描述和解决办法

show databases;

执行以上命令发现出错了
在这里插入图片描述
下面解决:

cd /opt/module/hive
rm -rf metastore_db

在这里插入图片描述

bin/schematool -initSchema -dbType derby

在这里插入图片描述
在这里插入图片描述
再次启动hive,正常

bin/hive

从零配置hive+案例练习+常见问题解决方法_第7张图片

MySQL存放元数据实现多hive客户端

非mysql存放元数据,如果打开两个hive客户端,会出错,需要用mysql存放hive的元数据,才能启动多个hive,下面配置。
退出hive窗口:exit;或者quit;

注: MySQL按照步骤参考前期文章。
或参考以下链接:
https://www.bilibili.com/video/av90053034?p=13

mysql安装好后,进行hive的相关配置
在/opt/module/hive/conf/下执行下面操作

vi hive-site.xml

添加以下内容

<configuration>
<property>
<name>javax.jdo.option.ConnectionURLname>
<value>jdbc:mysql://localhost:3306/hive?createDatabaseIfNotExist=true&autoReconnect=true&useSSL=falsevalue>
<description>JDBC connect string for a JDBC metastoredescription>
property>

<property>
<name>javax.jdo.option.ConnectionDriverNamename>
<value>com.mysql.jdbc.Drivervalue>
<description>Driver class name for a JDBC metastoredescription>
property>

<property>
<name>javax.jdo.option.ConnectionUserNamename>
<value>rootvalue>
<description>username to use against metastore databasedescription>
property>

<property>
<name>javax.jdo.option.ConnetionPasswordname>
<value>rootvalue>
<description>password to use against metastore databasedescription>
property>
configuration>

将mysql的驱动jar包复制到/opt/module/hive/lib/下,mysql驱动已上传
在/opt/module/hive/bin/下执行下面命令进行数据库的初始化

./schematool -dbType mysql -initSchema

这里有个小坑
当执行上述命令出现无法获取平台版本号或者无法连接mysql时,一般从以下方面进行排查:
1、 mysql驱动jar包是否和mysql版本号兼容;
2、 mysql中mysql数据库的user表中,修改root的host如下:
从零配置hive+案例练习+常见问题解决方法_第8张图片
再次执行 bin/schematool -dbType mysql -initSchema应该就没问题了。

多窗口启动Hive测试

先启动musql

mysql -uroot -p

再次打开多个窗口,分别启动hive

bin/hive

使用过程,查看数据库操作,还有一个坑
配置后,启动hive,show database出现错误,解决方法如下

cd /opt/module/hive
rm -rf metastore_db

在这里插入图片描述
再次启动,正常

bin/schematool -initSchema -dbType mysql
show databases;

从零配置hive+案例练习+常见问题解决方法_第9张图片
从零配置hive+案例练习+常见问题解决方法_第10张图片
这是,再打开一个客户端,启动hive,能正常使用了。
###################################################################

小例子

将本地文件导入到hive:
首先,在本地创建student.txt,并存入几条数据:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
启动hive,使用default数据库,创建student表:这里之前我新建了一个student表,所以先把它删除点,然后新建:
从零配置hive+案例练习+常见问题解决方法_第11张图片
-e 从命令行种输入SQl语句:
如:
退出hive,加参数-e也能直接查询

bin/hive -e "select * from student;"

从零配置hive+案例练习+常见问题解决方法_第12张图片
-f 使用文件中的sql语句

创建sql文件
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

从零配置hive+案例练习+常见问题解决方法_第13张图片
这样就读取sql文件中的sql语句进行查询了。

也可以将查询结果存储到一个文件里面
从零配置hive+案例练习+常见问题解决方法_第14张图片
从零配置hive+案例练习+常见问题解决方法_第15张图片
在hive窗口中查看hdfs文件系统

dfs -lsr /;
加上r表示迭代查询出所有。
从零配置hive+案例练习+常见问题解决方法_第16张图片
dfs -ls /;
不加r,只查询一级
在这里插入图片描述
在hive命令窗口中查看本地文件系统,如查看/opt下面的文件
! ls /;
在这里插入图片描述
也可以查看本地文件
! cat /opt/module/datas/student.txt;
从零配置hive+案例练习+常见问题解决方法_第17张图片
也就是说,前面加dfs,就是查看HDFS文件系统,加!,就是查本地系统。

查看在hive中输入的所有历史命令:
先退出hive窗口,再执行:

cat ~/.hivehistory

从零配置hive+案例练习+常见问题解决方法_第18张图片
Hive数据仓库位置配置:
(1) default数据仓库的最原始位置是在hdfs上的:/user/hive/warehouse路径下
(2) 在仓库目录下,没有对默认的数据仓库default创建文件夹,如果某张表属于default数据库,直接在数据仓库下创建一个文件夹
(3) 修改default数据仓库原始位置:将hive-default.xml.template如下配置信息拷贝到hive-site.xml文件中

这个是hive-default.xml.template中的内容,默认路径

在这里插入图片描述
在这里插入图片描述
显示当前数据库,以及查询表的头信息配置:
在hive-site.xml文件中添加如下配置信息,就可以实现显示当前数据库,以及查询表的表头信息配置。

<property>
  <name>hive.cli.print.headername>
  <value>truevalue>
property>
<property>
  <name>hive.cli.print.current.dbname>
  <value>truevalue>
property>

从零配置hive+案例练习+常见问题解决方法_第19张图片
未配置之前:
从零配置hive+案例练习+常见问题解决方法_第20张图片
配置后:

从零配置hive+案例练习+常见问题解决方法_第21张图片
Hive运行日志信息配置:
(1) hive的log默认存放在/tmp/hunter/hive.log目录下(当前用户名下)
在这里插入图片描述
(2) 修改hive的log存放日志到/opt/module/hive/logs

步骤:
(1) 修改/opt/module/hive/conf/hive-log4j.properties.template文件名称为hive-log4j.properties
(2) 在hive-log4j.properties文件中修改log存放位置

在这里插入图片描述
从零配置hive+案例练习+常见问题解决方法_第22张图片
从零配置hive+案例练习+常见问题解决方法_第23张图片
从零配置hive+案例练习+常见问题解决方法_第24张图片
再次运行hive,退出后查看,已经在我们配置的日志目录下面显示hive日志。

从零配置hive+案例练习+常见问题解决方法_第25张图片
参数配置方式
查看当前所有的配置信息hive>set;

在这里插入图片描述

附加

终端中hive命令不能删除不能修改解决办法
点击secure CRT选项/会话选项,选择终端/仿真,将终端改为linux即可
从零配置hive+案例练习+常见问题解决方法_第26张图片
从零配置hive+案例练习+常见问题解决方法_第27张图片

你可能感兴趣的:(linux,hive,mysql,数据库)