上传hive包(已上传资源包)
解压到/opt/module/下
tar -zxvf apache-hive-3.1.2-bin.tar.gz -C /opt/module/
修改解压后的名字
mv apache-hive-3.1.2-bin/ hive
进入到/opt/module/hive/conf
cd /opt/module/hive/conf
mv hive-env.sh.template hive-env.sh
vi hive-env.sh
添加以下这两个配置(Hadoop路径和hive路径,自己灵活改动)
配置好启动HDFS
start-dfs.sh
先查看HDFS文件系统现有目录
hadoop fs -lsr /
在HDFS上创建/tmp和/user/hive/warehouse两个目录并修改他们的同组权限可写
hadoop fs -mkdir -p /user/hive/warehouse
hadoop fs -mkdir /tmp
hadoop fs -chmod 777 /user/hive/warehouse
hadoop fs -chmod 777 /tmp
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版本不一致
两个位置分别位于下面两个目录:
解决办法:
删除低版本的那个,将高版本的复制到低版本目录下
这种情况是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/
show databases;
cd /opt/module/hive
rm -rf metastore_db
bin/schematool -initSchema -dbType derby
bin/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如下:
再次执行 bin/schematool -dbType mysql -initSchema应该就没问题了。
先启动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,能正常使用了。
###################################################################
将本地文件导入到hive:
首先,在本地创建student.txt,并存入几条数据:
启动hive,使用default数据库,创建student表:这里之前我新建了一个student表,所以先把它删除点,然后新建:
-e 从命令行种输入SQl语句:
如:
退出hive,加参数-e也能直接查询
bin/hive -e "select * from student;"
也可以将查询结果存储到一个文件里面
在hive窗口中查看hdfs文件系统
dfs -lsr /;
加上r表示迭代查询出所有。
dfs -ls /;
不加r,只查询一级
在hive命令窗口中查看本地文件系统,如查看/opt下面的文件
! ls /;
也可以查看本地文件
! cat /opt/module/datas/student.txt;
也就是说,前面加dfs,就是查看HDFS文件系统,加!,就是查本地系统。
查看在hive中输入的所有历史命令:
先退出hive窗口,再执行:
cat ~/.hivehistory
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运行日志信息配置:
(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,退出后查看,已经在我们配置的日志目录下面显示hive日志。
终端中hive命令不能删除不能修改解决办法
点击secure CRT选项/会话选项,选择终端/仿真,将终端改为linux即可