shell命令执行hive脚本(hive交互,hive的shell编程)
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交互,hive的shell编程)的更多相关文章
- 浅析linux 下shell命令执行和守护进程
执行shell脚本有以下几种方式 1.相对路径方式,需先cd到脚本路径下 [root@banking tmp]# cd /tmp [root@banking tmp]# ./ceshi.sh 脚本执行 ...
- 使用命令执行 sql 脚本文件
使用命令执行 sql 脚本文件 方法: 在 Windows 下使用 cmd 命令执行(或 Unix 或 Linux 控制台下)[Mysql的bin目录]\mysql –u用户名 –p密码 –D数据库名 ...
- node.js在Linux下执行shell命令、.sh脚本
首先,引入子进程模块 var process = require('child_process'); 执行shell命令 调用该模块暴露出来的方法exec process.exec('shutdown ...
- Linux shell批量执行scp脚本工具
转载: linux shell + expect:批量scp脚本工具 2011-09-13 15:51:06 分类: Python/Ruby 最近在准备一个部署的任务,其中有一 ...
- 用cmd命令执行SQL脚本
1.简单说明 osql 为SQL Server的命令 2.要在cmd中执行该命令,一般安装SQL Server后该命令对应的路径会自动添加到系统环境变量中. 3.-S 表示要连接的数据库 -U表示登录 ...
- 【Devops】【docker】【CI/CD】关于jenkins构建成功后一步,执行的shell命令详解+jenkins容器运行宿主机shell命令的实现方法
1.展示这段shell命令 +详解 #================================================================================= ...
- Saltstack限制某些shell命令执行
在cmdmod模块中cmd.run.cmd.run_all.cmd.run_stdout等都可以执行shell命令,要静止某些shell命令,可以修改_run()这个函数来彻底的静止调用这个命令. c ...
- python输出shell命令执行结果
import os,subprocess p = subprocess.Popen("df -h", shell=True, stdout=subprocess.PIPE) out ...
- 【linux】linux 下 shell命令 执行结果赋值给变量【两种方式】
方法1:[通用方法] 使用Tab键上面的反引号 例子如下: find命令 模糊查询在/apps/swapping目录下 查找 文件名中包含swapping并且以.jar结尾的文件 使用反引号 引住命令 ...
随机推荐
- [SCOI 2005]王室联邦
Description “余”人国的国王想重新编制他的国家.他想把他的国家划分成若干个省,每个省都由他们王室联邦的一个成员来管理.他的国家有n个城市,编号为1..n.一些城市之间有道路相连,任意两个不 ...
- StopAllSounds
10月3日,在杭州市西湖景区,一只小松鼠不停地接受一道道食物,花生.玉米.饼干,可谓来者不拒,憨态可掬的模样吸引了众多围观者...Description 小松鼠开心地在树之间跳跃着,突然她停了下来 ...
- ●UOJ58 [WC2013]糖果公园
题链: http://uoj.ac/problem/58题解: 树上带修莫队. 每个块的大小为$n^{\frac{2}{3}}$,在dfs时,把点集分为若干块. 然后类似序列带修莫队,三个关键字:be ...
- 2015 多校联赛 ——HDU5302(矩阵快速幂)
The Goddess Of The Moon Sample Input 2 10 50 12 1213 1212 1313231 12312413 12312 4123 1231 3 131 5 5 ...
- NOIP提高组2010 乌龟棋
小明过生日的时候,爸爸送给他一副乌龟棋当作礼物. 乌龟棋的棋盘是一行N个格子,每个格子上一个分数(非负整数).棋盘第1格是唯一的起点,第N格是终点,游戏要求玩家控制一个乌龟棋子从起点出发走到终点. 乌 ...
- hdu 4578 线段树(标记处理)
Transformation Time Limit: 15000/8000 MS (Java/Others) Memory Limit: 65535/65536 K (Java/Others) ...
- [USACO17JAN]Subsequence Reversal序列反转
题目描述 Farmer John is arranging his NN cows in a line to take a photo (1 \leq N \leq 501≤N≤50). The he ...
- JFinal实现伪静态
JFinal 是基于 Java 语言的极速 WEB + ORM 框架,其核心设计目标是开发迅速.代码量少.学习简单.功能强大.轻量级.易扩展.Restful.在拥有Java语言所有优势的同时再拥有ru ...
- linux退出状态码及exit命令
Linux提供了一个专门的变量$?来保存上个已执行命令的退出状态码.对于需要进行检查的命令,必须在其运行完毕后立刻查看或使用$?变量.它的值会变成由shell所执行的最后一条命令的退出状态码: [ro ...
- Union和Union All 的区别
Union和Union All 的区别: Union 是对结果集进行并集操作,不包括重复行,同时进行默认规则的排序: Union All,对两个结果集进行并集操作,包括重复行,不进行排序: Inter ...