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结尾的文件 使用反引号 引住命令 ...
随机推荐
- [LeetCode] 24 Game 二十四点游戏
You have 4 cards each containing a number from 1 to 9. You need to judge whether they could operated ...
- Diango + uwsgi + nginx 项目部署(可外网访问)
自己通过nginx uwsgi 部署django项目,查询了很多资料,遇到了很多问题,最终完成了部署,趁着心情愉悦,写个随笔,为曾像我一样苦寻解决方案的小伙伴们提供些思路. 安装Nginx: #安装n ...
- [HNOI 2015]菜肴制作
Description 知名美食家小 A被邀请至ATM 大酒店,为其品评菜肴. ATM 酒店为小 A 准备了 N 道菜肴,酒店按照为菜肴预估的质量从高到低给予 1到N的顺序编号,预估质量最高的菜肴编号 ...
- P3928 SAC E#1 - 一道简单题 Sequence2
题目背景 小强和阿米巴是好朋友. 题目描述 小强喜欢数列.有一天,他心血来潮,写下了三个长度均为n的数列. 阿米巴也很喜欢数列.但是他只喜欢其中一种,波动数列. 阿米巴把他的喜好告诉了小强.小强便打算 ...
- [HAOI2008]硬币购物
题目描述 硬币购物一共有4种硬币.面值分别为c1,c2,c3,c4.某人去商店买东西,去了tot次.每次带di枚ci硬币,买si的价值的东西.请问每次有多少种付款方法. 输入输出格式 输入格式: 第一 ...
- 【BZOJ2705】【Sdoi2012】Longge的问题
Description Longge的数学成绩非常好,并且他非常乐于挑战高难度的数学问题.现在问题来了:给定一个整数N,你需要求出\(\Sigma gcd(i, N) (1 \leq i \leq N ...
- bzoj1858[Scoi2010]序列操作 线段树
1858: [Scoi2010]序列操作 Time Limit: 10 Sec Memory Limit: 64 MBSubmit: 3079 Solved: 1475[Submit][Statu ...
- BZOJ3684 大朋友和多叉树(多项式相关计算)
设$f(x)$为树的生成函数,即$x^i$的系数为根节点权值为$i$的树的个数.不难得出$f(x)=\sum_{k\in D}f(x)^k+x$我们要求这个多项式的第$n$项,由拉格朗日反演可得$[x ...
- linux内核input子系统解析【转】
转自:http://emb.hqyj.com/Column/Column289.htm 时间:2017-01-04作者:华清远见 Android.X windows.qt等众多应用对于linux系统中 ...
- 修改SQL数据库中表字段类型时,报“一个或多个对象访问此列”错误的解决方法
在SQL数据库中使用SQL语句(格式:alter table [tablename] alter column [colname] [newDataType])修改某表的字段类型时,报一下错误:由于一 ...