Hive3第二章:简单交互

系列文章目录

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



前言

今天紧接着上一章继续学习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的配置文件里添加配置信息。
在这里插入图片描述
添加以下内容

<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

在这里插入图片描述

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

bin/hive --service hiveserver2

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

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

在这里插入图片描述
现在我们就可以正常使用了,以后也可以在代码里使用它。
在这里插入图片描述

二、脚本封装

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

2.运行脚本

bin/hiveservices.sh start

还可以查看服务状态。

bin/hiveservices.sh status

在这里插入图片描述
多等等再看,不然就是异常。
在这里插入图片描述
等待正常之后,就可以使用jdbc连接了。
在这里插入图片描述

三、命令行交互

1.直接插入hql

bin/hive -e "show databases;"

在这里插入图片描述

2.间接插入

创建一个文件,随便写一行命令。
在这里插入图片描述
在这里插入图片描述
所以我么可以提前将命令写到文件中,然后在使用hive运行。

四、常见属性配置

1.日志信息

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

在这里插入图片描述
现在我们编辑文件。

 vim hive-log4j2.properties

在这里修改成自定义的路径。
在这里插入图片描述
然后随便在hive里边做个操作。
在这里插入图片描述
可以看到这里多了一个日志文件。

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。
在这里插入图片描述
现在就会在控制台打印数据库名称。


总结

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

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值