linux进入hive写sql,Hive执行方式及结合shell脚本

本文介绍了如何在Linux环境中通过Shell脚本执行Hive SQL,包括直接在命令行执行、从文件读取HQL、将Hive命令放入Shell脚本以及如何传递参数给Hive脚本,涉及hive -e、-f选项以及hiveconf和hivevar的使用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Hive可以在CLI命令行中执行,但是对于不懂的hive的人会比较麻烦,所以就想能否通过shell去执行hive的语句呢,封装起来只要执行一条shell命令就可以了,每次执行只要自己传入不同参数就可以了,并且如果以后需要做定时器任务crontab也是需要调用shell的,于是就有了下面的学习

1、直接在命令行中执行

hive -e 'create table db.cl_a(a string);create table db.cl_b(b string);'

7a09c3bb55f52c3f33a549e04873e1fc.png

2、把需要执行的hql单独保存成文件,然后通过linux的命令行执行

hive -f hive-script.sql

也可在Hive shell中执行

source /路径/文件名.hql;

hive-script.sql文件代码如下

use database;

drop table cl_a;

--create table cl_a(a string);

e05df06e1bfe923ca8cb1a02cf1c4d03.png

3、结合1、2,把他们放到shell文件中(.sh文件),sh文件等同于在命令行,sh hivesh-test.sh

hivesh-test.sh文件代码

hive -f hive-script.sql

hive -e 'create table db.cl_a(a string);create table db.cl_b(b string);'

4、进阶,比如我在执行sh的时候,想传入参数

(1)通过shell参数传入

hivesh-test.sh文件代码

db=$1

echo ${db}

hive -e 'use db;create table db.'${db}'(a string);create table db.cl_b(b string);'

linux命令行执行如下

sh hivesh-test2.sh cl_a

注意,这种方式不能传参数到一个单独的.sql文件,那怎么办?请往下看,通过下面两种方式可以传入参数

cc22ddfa4841be70ab5c2e3deaf9f69b.png

(2)通过hiveconf,hiveconf属于hive-site.xml下面配置的环境变量

hivesh-test.sh文件代码

tb_name=$1

echo ${tb_name}

hive --hiveconf db=${tb_name} -f hive-script.sql

hive-script.sql代码如下

use db;

drop table ${hiveconf:db};

--create table cl_a(a string);

命令行执行的命令如下

sh hivesh-test.sh cl_a

(3)hivevar,hivevar为用户自定义变量

hivesh-test.sh文件代码

tb_name=$1

echo ${tb_name}

hive --hivevar db=${tb_name} -f hive-script.sql

hive-script.sql代码如下

use db;

drop table ${db};

命令行执行如下

sh hivesh-test.sh cl_a

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值