• hive 连接及使用(三)


    1. 连接

    有三种方式连接 hive

    • cli:直接输入 bin/hive 就可以进入 cli
    • hiveserver2、beeline
    • webui

    1.1 hiveserver2/beeline

    1、开启 hiveserver2 服务

    // 前台运行,当 beeline 输入命令时,服务端会返回 OK
    [root@hadoop1 bin]# ./hiveserver2
    OK
    
    // 后台运行,1:表示标准日志输出、2:表示错误日志输出 如果我没有配置日志的输出路径,日志会生成在当前工作目录,默认的日志名称叫做: nohup.xxx
    nohup hiveserver2 1>/home/hadoop/hiveserver.log 2>/home/hadoop/hiveserver.err &
    或者:nohup hiveserver2 1>/dev/null 2>/dev/null &
    或者:nohup hiveserver2 >/dev/null 2>&1 &
    

    2、启动 beeline 客户端连接

    [hadoop@hadoop1 bin]$ ./beeline
    
    // 这里为 hadoop 的用户名
    beeline> !connect jdbc:hive2://hadoop1:10000
    Connecting to jdbc:hive2://hadoop1:10000
    Enter username for jdbc:hive2://hadoop1:10000: hadoop
    Enter password for jdbc:hive2://hadoop1:10000: ******
    Connected to: Apache Hive (version 1.2.1)
    Driver: Hive JDBC (version 1.2.1)
    Transaction isolation: TRANSACTION_REPEATABLE_READ
    0: jdbc:hive2://hadoop1:10000> show databases;
    +----------------+--+
    | database_name  |
    +----------------+--+
    | default        |
    | hive_1         |
    +----------------+--+
    2 rows selected (4.183 seconds)
    0: jdbc:hive2://hadoop1:10000>
    
    // 指定用户名连接
    beeline -u jdbc:hive2://hadoop1:10000 -n hadoop
    

    参考文章:Hive学习之路 (四)Hive的连接3种连接方式

    2. 交互式命令

    // -e 不进入hive的交互窗口执行sql语句
    bin/hive -e "select id from student;"
    
    // -f 执行脚本中的 sql 语句,hivef.sql 语句:select *from student;
    bin/hive -f /opt/module/datas/hivef.sql
    bin/hive -f /opt/module/datas/hivef.sql  > /opt/module/datas/hive_result.txt
    
    // 退出
    exit、quit
    
    // 查看 hdfs 文件系统
    dfs -ls /;
    
    // 查看本地文件系统
    ! ls /opt/module/datas;
    
    // 查看在hive中输入的所有历史命令,一般为当前用户的根目录 /root 或 /home 目录 
    cat /home/hadoop/.hivehistory
    
    // 其他常用命令
    show databases;
    show tables;
    drop table tableName;
    desc tableName;		// 查看表结构
    use default;		// 使用数据库
    

    3. 常见属性配置

    3.1 数据仓库位置

    Default 数据仓库的最原始位置是在 hdfs 上的:/user/hive/warehouse 路径下,修改位置:

    <!--hive-default.xml.template 拷贝到 hive-site.xml文件中-->
    
    <property>
    <name>hive.metastore.warehouse.dir</name>
    <value>/user/hive/warehouse</value>
    <description>location of default database for the warehouse</description>
    </property>
    

    配置完后,需要修改同组用户权限:

    bin/hdfs dfs -chmod g+w /user/hive/warehouse
    

    注意:重启 hive cli 才会生效

    3.2 修改查询结果显示信息

    1、新建一张表 student,并插入数据:

    // 以 \t 作为分隔符
    [hadoop@hadoop1 apps]$ vim my_code/student.txt
    
    // 检查分隔符
    [hadoop@hadoop1 apps]$ cat -T my_code/student.txt	
    1001^Izhangshan
    1002^Ilishi
    1003^Izhaoliu
    
    // 创建一张表 student,数据以 \t 作为分隔符
    hive> create table student(id int, name string) ROW FORMAT DELIMITED FIELDS TERMINATED BY '\t';
    OK
    Time taken: 0.463 seconds
    
    // 从本地导入数据
    hive> load data local inpath '/home/hadoop/apps/my_code/student.txt' into table student;
    Loading data to table hive_1.student
    Table hive_1.student stats: [numFiles=1, totalSize=39]
    OK
    Time taken: 0.846 seconds
    
    // 查询(发现没有显示具体列名等信息)
    hive> select * from student;
    OK
    1001    zhangshan
    1002    lishi
    1003    zhaoliu
    Time taken: 0.229 seconds, Fetched: 3 row(s)
    
    

    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>
    

    3、重启 hive

    // 显示列名
    hive (hive_1)> select * from student;
    OK
    student.id      student.name
    1001    zhangshan
    1002    lishi
    1003    zhaoliu
    Time taken: 1.636 seconds, Fetched: 3 row(s)
    

    3.3 Hive 运行日志信息配置

    1、默认日志路径:/tmp/hadoop/hive.log

    2、修改 hive-log4j.properties

    [hadoop@hadoop1 apps]$ cd hive/conf/
    [hadoop@hadoop1 conf]$ ls
    beeline-log4j.properties.template  hive-env.sh           hive-exec-log4j.properties.template  hive-site.xml
    hive-default.xml.template          hive-env.sh.template  hive-log4j.properties.template       ivysettings.xml
    [hadoop@hadoop1 conf]$ cp hive-log4j.properties.template hive-log4j.properties
    [hadoop@hadoop1 conf]$ vim hive-log4j.properties
    
    // 修改日志路径
    hive.log.dir=/home/hadoop/apps/hive/logs
    

    3、重启 hive

    3.4 参数配置方式

    参数配置有三种方式:

    • 修改配置文件:对所有会话有效
    • 命令行参数:仅对本次会话有效,即退出 cli 就失效
    • 参数声明:上同

    优先级:配置文件 < 命令行参数 < 参数声明

    系统级的参数,log4j,必须用前两种方式设定,因为参数的读取在会话建立之前就完成了,推荐使用第一种方式

    配置文件

    • 默认配置文件:hive-default.xml

    • 用户自定义配置文件:hive-site.xml

    注意:用户自定义配置会覆盖默认配置,另外 hive 配置会覆盖 hadoop 配置,因为它会读取 hadoop 配置

    命令行参数

    即在启动 hive时通过命令行来添加一些参数,如:

    // 格式:-hiveconf param=value
    bin/hive -hiveconf mapred.reduce.tasks=10;
    
    // 查看配置
    
    hive (default)> set mapred.reduce.tasks;
    mapred.reduce.tasks=-1
    

    参数声明方式

    可以在 HQL 中使用 SET 关键字设定参数

    hive (default)> set mapred.reduce.tasks=100;
    
  • 相关阅读:
    剑指Offer-46.孩子们的游戏(圆圈中最后剩下的数)(C++/Java)
    剑指Offer-45.扑克牌顺子(C++/Java)
    剑指Offer-44.翻转单词顺序列(C++/Java)
    剑指Offer-43.左旋转字符串(C++/Java)
    剑指Offer-42.和为S的两个数字(C++/Java)
    剑指Offer-41.和为S的连续正数序列(C++/Java)
    剑指Offer-40.数组中只出现一次的数字(C++/Java)
    剑指Offer-39.把数组排成最小的数(C++/Java)
    Codeforces Round #316 (Div. 2) D Tree Requests
    URAL 1774 Barber of the Army of Mages (最大流)
  • 原文地址:https://www.cnblogs.com/midworld/p/15646977.html
Copyright © 2020-2023  润新知