shell命令执行hive脚本(hive交互)

 更新时间:2022年02月25日 15:18:18   作者:longshenlmj  
本文主要介绍了shell命令执行hive脚本(hive交互),文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

Hive执行方式

Hive的hql命令执行方式有三种:

1、CLI 方式直接执行
2、作为字符串通过shell调用hive –e执行(-S开启静默,去掉”OK”,”Time taken”)
3、作为独立文件,通过shell调用 hive –f或hive –i执行执行

方式1

键入“hive”,启动hive的cli交互模式。Set可以查看所有环境设置参数,并可以重设。其他命令如,
    Use database        选择库
    quit/exit   退出Hive的交互模式 
    set –v  显示Hive中的所有变量
    set <key>=<value>       设置参数
    执行本地shell :!<cmd>       交互模式下可执行shell命令,例如(查看linux根目录下文件列表:"!ls -l /;")
    操作云命令:dfs < command>        交互模式下直接操作hadoop命令如 dfs fs –ls
    Hql语句       执行查询并输出到标准输出
    add [FILE|JAR|ARCHIVE] <value> [<value>]*       增加一个文件到资源列表
    list FILE       列出所有已经添加的资源

方式二

Hql作为字符串在shell脚本中执行,如
    hive -e "use ${database};select * from tb"
查询结果可以直接导出到本地本件(默认分隔符为\t):
    hive -e "select * from tb" > tb.txt

如果需要查看执行步骤,则在命令前面添加

set –x

另外,在shell脚本中,字符串有两种定义方式:

1)  直接定义字符串对象:sql=”字符串”

2)  通过命令定义:sql=$(cat <<endtag 字符串endtag)方式可以将字符串复制给sql,执行hql命令的shell脚本如下:

####### execute hive ######
sql=$(cat <<!EOF

USE pmp;
set mapred.queue.names=queue3;

drop table if exists people_targeted_delivery;
create table people_targeted_delivery
( special_tag_id int,
  cnt bigint
);

INSERT OVERWRITE LOCAL DIRECTORY '$cur_path/people_targeted_delivery'
ROW FORMAT DELIMITED FIELDS TERMINATED BY '\t' 
select special_tag_id,count(1) 
from t_pmp_special_user_tags
group by special_tag_id;

!EOF)
############  execute begin   ###########
echo $sql
$HIVE_HOME/bin/hive -e "$sql"

exitCode=$?
if [ $exitCode -ne 0 ];then
         echo "[ERROR] hive execute failed!"
         exit $exitCode
fi

方式三

将hql语句保存为独立文件,后缀名不限制,可以用.q或者.hql作为标识:
    A,这个文件在cli模式下,用source命令执行,如:source ./mytest.hql
    B,在shell中执行命令,如:hive -f  mytest.sql

Hive指定预执行文件命令“hive –i”(或叫初始化文件)

命令:hive -i hive-script.sql
在hive启动cli之前,先执行指定文件(hive-script.sql)中的命令。
也就是说,允许用户在cli启动时预先执行一个指定文件,比如,有一些常用的环境参数设置,频繁执行的命令,可以添加在初始化文件中,比如,
    某些参数设置
        set mapred.queue.names=queue3;
        SET mapred.reduce.tasks=14;
    添加udf文件
        add JAR ./playdata-hive-udf.jar;
    设置Hive的日志级别 
        hive -hiveconf hive.root.logger=INFO;

到此这篇关于shell命令执行hive脚本(hive交互)的文章就介绍到这了,更多相关shell命令执行hive内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • linux 权限管理命令脚本解析

    linux 权限管理命令脚本解析

    这篇文章主要为大家介绍了linux 权限管理命令脚本解析,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-09-09
  • Shell命令批量修改图片文件名

    Shell命令批量修改图片文件名

    这篇文章主要介绍了Shell命令批量修改图片文件名,本文使用for循环、awk、sed等命令实现批量修改图片文件名,需要的朋友可以参考下
    2014-12-12
  • Shell脚本实现删除邮件队列

    Shell脚本实现删除邮件队列

    这篇文章主要介绍了Shell脚本实现删除邮件队列,本文直接给出实现代码,需要的朋友可以参考下
    2015-02-02
  • linux下监视进程 崩溃挂掉后自动重启的shell脚本

    linux下监视进程 崩溃挂掉后自动重启的shell脚本

    如何保证服务一直运行?如何保证即使服务挂掉了也能自动重启?在写服务程序时经常会碰到这样的问题。在Linux系统中,强大的shell就可以很灵活的处理这样的事务
    2013-06-06
  • 使用shell脚本快速登录容器的实现步骤

    使用shell脚本快速登录容器的实现步骤

    本文主要介绍了使用shell脚本快速登录容器的实现步骤,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2022-08-08
  • linux下wc统计文件的个数、行数、字数、字节数等信息方法

    linux下wc统计文件的个数、行数、字数、字节数等信息方法

    下面小编就为大家带来一篇linux下wc统计文件的个数、行数、字数、字节数等信息方法。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-05-05
  • Shell脚本统计文件行数的8种方法

    Shell脚本统计文件行数的8种方法

    这篇文章主要介绍了Shell脚本统计文件行数的8种方法,本文讲解了获取单个文件行数、获取特定目录所有文件的行数两种需求共计8种方法,需要的朋友可以参考下
    2015-03-03
  • Shell 实现多任务并发的示例代码

    Shell 实现多任务并发的示例代码

    本文主要介绍了Shell 实现多任务并发的示例代码,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-06-06
  • 分享70个经典的 Shell 脚本面试题与答案

    分享70个经典的 Shell 脚本面试题与答案

    我们为你的面试准备选择了 70 个你可能遇到的 shell 脚本面试问题及解答。了解脚本或至少知道基础知识对系统管理员来说至关重要,它也有助于你在工作环境中自动完成很多任务
    2018-02-02
  • 浅析Linux中重定向问题

    浅析Linux中重定向问题

    这篇文章主要介绍了浅析Linux中重定向问题,需要的朋友可以参考下
    2017-08-08

最新评论