系列文章目录

Hive3第一章:环境安装 Hive3第二章:简单交互



文章目录

  • 系列文章目录
  • 前言
  • 一、jdbc连接hive
  • 1.配置修改
  • 2.启动 hiveserver2
  • 二、脚本封装
  • 1.编辑脚本
  • 2.运行脚本
  • 三、命令行交互
  • 1.直接插入hql
  • 2.间接插入
  • 四、常见属性配置
  • 1.日志信息
  • 2.打印库/表头
  • 总结



前言

今天紧接着上一章继续学习hive,学一些简单的交互。


一、jdbc连接hive

驱动文件的上传的配置上一章说过了,这里就不说了。

1.配置修改

vim conf/hive-site.xm

继续修改hive-site.xml,添加以下内容

<!-- 指定 hiveserver2 连接的 host -->
 <property>
 <name>hive.server2.thrift.bind.host</name>
 <value>hadoop102</value>
 </property>
 <!-- 指定 hiveserver2 连接的端口号 -->
 <property>
 <name>hive.server2.thrift.port</name>
 <value>10000</value>
 </property>

2.启动 hiveserver2

因为hive是依赖hadoop的,所以我们要先再Hadoop的配置文件里添加配置信息。

hive 3 对比 hive 1 hive2和hive3_hadoop


添加以下内容

<property>
    <name>hadoop.proxyuser.atguigu.hosts</name>
    <value>*</value>
</property>
<property>
    <name>hadoop.proxyuser.atguigu.groups</name>
    <value>*</value>
</property>

hiveserver2依赖元数据服务,所以我么先启动元数据服务。

bin/hive --service metastore

hive 3 对比 hive 1 hive2和hive3_bc_02

然后新开一个窗口,启动hiveserver2

bin/hive --service hiveserver2

可能要多等一会。
最后再开一个窗口,使用jdbc连接。

bin/beeline -u jdbc:hive2://hadoop102:10000 -n atguigu

hive 3 对比 hive 1 hive2和hive3_hive 3 对比 hive 1_03


现在我们就可以正常使用了,以后也可以在代码里使用它。

hive 3 对比 hive 1 hive2和hive3_hive_04

二、脚本封装

1.编辑脚本

vim $HIVE_HOME/bin/hiveservices.sh
#!/bin/bash

HIVE_LOG_DIR=$HIVE_HOME/logs

if [ ! -d $HIVE_LOG_DIR ]

then

mkdir -p $HIVE_LOG_DIR

fi

#检查进程是否运行正常,参数 1 为进程名,参数 2 为进程端口

function check_process()
{
 pid=$(ps -ef 2>/dev/null | grep -v grep | grep -i $1 | awk '{print $2}')
 ppid=$(netstat -nltp 2>/dev/null | grep $2 | awk '{print $7}' | cut -d '/' -f 1)
 echo $pid
 [[ "$pid" =~ "$ppid" ]] && [ "$ppid" ] && return 0 || return 1
}

function hive_start()
{

 metapid=$(check_process HiveMetastore 9083)

 cmd="nohup hive --service metastore >$HIVE_LOG_DIR/metastore.log 2>&1 &"

 [ -z "$metapid" ] && eval $cmd || echo "Metastroe 服务已启动"

 server2pid=$(check_process HiveServer2 10000)

 cmd="nohup hiveserver2 >$HIVE_LOG_DIR/hiveServer2.log 2>&1 &"

 [ -z "$server2pid" ] && eval $cmd || echo "HiveServer2 服务已启动"

}

function hive_stop()

{

metapid=$(check_process HiveMetastore 9083)

 [ "$metapid" ] && kill $metapid || echo "Metastore 服务未启动"

 server2pid=$(check_process HiveServer2 10000)

 [ "$server2pid" ] && kill $server2pid || echo "HiveServer2 服务未启动"

}

case $1 in "start")

 hive_start
 ;;
"stop")
 hive_stop
 ;;

"restart")

 hive_stop

 sleep 2

 hive_start

 ;;

"status")

 check_process HiveMetastore 9083 >/dev/null && echo "Metastore 服务运行正常" || echo "Metastore 服务运行异常"

 check_process HiveServer2 10000 >/dev/null && echo "HiveServer2 服务运行正常" || echo "HiveServer2 服务运行异常"

 ;;

*)

 echo Invalid Args!

 echo 'Usage: '$(basename $0)' start|stop|restart|status'
 ;;
esac

hive 3 对比 hive 1 hive2和hive3_bc_05

2.运行脚本

bin/hiveservices.sh start

还可以查看服务状态。

bin/hiveservices.sh status

hive 3 对比 hive 1 hive2和hive3_hadoop_06


多等等再看,不然就是异常。

hive 3 对比 hive 1 hive2和hive3_hive 3 对比 hive 1_07


等待正常之后,就可以使用jdbc连接了。

hive 3 对比 hive 1 hive2和hive3_大数据_08

三、命令行交互

1.直接插入hql

bin/hive -e "show databases;"

hive 3 对比 hive 1 hive2和hive3_hive_09

2.间接插入

创建一个文件,随便写一行命令。

hive 3 对比 hive 1 hive2和hive3_hive 3 对比 hive 1_10


hive 3 对比 hive 1 hive2和hive3_hadoop_11


所以我么可以提前将命令写到文件中,然后在使用hive运行。

四、常见属性配置

1.日志信息

正常情况下hive的日志信息是存放在,/tmp/atguigu/hive.log目录下,/tmp目录,大家都知道,是临时目录,里面的东西,系统会定期删除,所以长时间在这里存储目录,显然不太安全,所以我们自定义一个存储路径。
在conf目录下启动配置文件。

hive 3 对比 hive 1 hive2和hive3_hadoop_12


现在我们编辑文件。

vim hive-log4j2.properties

在这里修改成自定义的路径。

hive 3 对比 hive 1 hive2和hive3_大数据_13


然后随便在hive里边做个操作。

hive 3 对比 hive 1 hive2和hive3_hadoop_14


可以看到这里多了一个日志文件。

2.打印库/表头

在hive-site.xml里边追加以下内容。

<property>
 <name>hive.cli.print.header</name>
 <value>true</value>
 </property>
 <property>
 <name>hive.cli.print.current.db</name>
 <value>true</value>
 </property>

重新登陆hive。

hive 3 对比 hive 1 hive2和hive3_hive 3 对比 hive 1_15


现在就会在控制台打印数据库名称。


总结

今天的内容不算多,这一张就先到这里。