• Hive3第二章:简单交互


    系列文章目录

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



    前言

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


    一、jdbc连接hive

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

    1.配置修改

    vim conf/hive-site.xm
    
    • 1

    继续修改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>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10

    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>
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9

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

    bin/hive --service metastore
    
    • 1

    在这里插入图片描述

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

    bin/hive --service hiveserver2
    
    • 1

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

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

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

    二、脚本封装

    1.编辑脚本

    vim $HIVE_HOME/bin/hiveservices.sh
    
    • 1
    #!/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
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53
    • 54
    • 55
    • 56
    • 57
    • 58
    • 59
    • 60
    • 61
    • 62
    • 63
    • 64
    • 65
    • 66
    • 67
    • 68
    • 69
    • 70
    • 71
    • 72
    • 73
    • 74
    • 75
    • 76
    • 77
    • 78
    • 79
    • 80
    • 81
    • 82
    • 83
    • 84
    • 85
    • 86

    2.运行脚本

    bin/hiveservices.sh start
    
    • 1

    还可以查看服务状态。

    bin/hiveservices.sh status
    
    • 1

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

    三、命令行交互

    1.直接插入hql

    bin/hive -e "show databases;"
    
    • 1

    在这里插入图片描述

    2.间接插入

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

    四、常见属性配置

    1.日志信息

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

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

     vim hive-log4j2.properties
    
    • 1

    在这里修改成自定义的路径。
    在这里插入图片描述
    然后随便在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>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    重新登陆hive。
    在这里插入图片描述
    现在就会在控制台打印数据库名称。


    总结

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

  • 相关阅读:
    【0143】 System V共享内存(Shared Memory)
    计算机网络(59)
    C++模板初阶 —— 函数模板、类模板、模板的声明和定义分离(多文件使用的注意事项)
    ajax图书管理项目
    Maven打包运行普通项目
    苹果电脑构建XLua的arm64-v8a、armeabi-v7a、x86等的so库,
    关于mybatis中collection出现的问题(ofType 和 javaType )
    AJAX的使用,搭建web服务器,AJAX响应消息类型,JSON
    AtCoder Beginner Contest 354 (ABCDEFG题)视频讲解
    CentOS 7.5 centos failed to load selinux policy 错误解决方法
  • 原文地址:https://blog.csdn.net/weixin_50835854/article/details/126839761