hive脚本执行方式
2019独角兽企业重金招聘Python工程师标准>>>
1. hive脚本的执行方式
hive脚本的执行方式大致有三种:
1. hive控制台
执行;
2. hive -e "SQL"
执行;
3. hive -f SQL文件
执行;
参考hive的用法
usage: hive-d,--define <key=value> Variable subsitution to apply to hivecommands. e.g. -d A=B or --define A=B--database <databasename> Specify the database to use-e <quoted-query-string> SQL from command line-f <filename> SQL from files-H,--help Print help information-h <hostname> connecting to Hive Server on remote host--hiveconf <property=value> Use value for given property--hivevar <key=value> Variable subsitution to apply to hivecommands. e.g. --hivevar A=B-i <filename> Initialization SQL file-p <port> connecting to Hive Server on port number-S,--silent Silent mode in interactive shell-v,--verbose Verbose mode (echo executed SQL to theconsole)
1.1. hive控制台
执行
顾名思义,是进入hive控制台以后,执行sql脚本,例如:
hive> set mapred.job.queue.name=pms;
hive> select page_name, tpa_name from pms.pms_exps_prepro limit 2;
Total MapReduce jobs = 1
Launching Job 1 out of 1
...
Job running in-process (local Hadoop)
2015-10-23 10:06:47,756 null map = 100%, reduce = 0%
2015-10-23 10:06:48,863 null map = 23%, reduce = 0%
2015-10-23 10:06:49,946 null map = 38%, reduce = 0%
2015-10-23 10:06:51,051 null map = 72%, reduce = 0%
2015-10-23 10:06:52,129 null map = 100%, reduce = 0%
Ended Job = job_local1109193547_0001
Execution completed successfully
Mapred Local Task Succeeded . Convert the Join into MapJoin
OK
APP首页 APP首页_价格比京东低
APP首页 APP首页_价格比京东低
Time taken: 14.279 seconds
hive>
1.2. hive -e "SQL"
方式执行
利用hive -e "SQL"
的方式进入hive控制台并直接执行sql脚本,例如:
hive -e "
set mapred.job.queue.name=pms;
set mapred.job.name=[HQL]exps_prepro_query;select page_name, tpa_name
from pms.pms_exps_prepro
limit 2;"
1.3. hive -f SQL文件
方式执行
执行sql文件中的sql脚本,例如:
pms_exps_prepro.sql文件内容如下:
set mapred.job.queue.name=pms;
set hive.exec.reducers.max=48;
set mapred.reduce.tasks=48;
set mapred.job.name=[HQL]pms_exps_prepro;drop table if exists pms.pms_exps_prepro;
create table pms.pms_exps_prepro as
select a.provinceid,a.cityid,a.ieversion,a.platform,'${date}' as ds
from track_exps a;
上述文件中的sql脚本接收一个日期,接收参数写法类似${date}
,执行时如下执行:
date=2015-10-22
hive -f pms_exps_prepro.sql --hivevar date=$date
2. hive转义字符的问题
下面以一个业务场景阐述关于hive转义字符的问题
track_exps记录曝光数据,现在小A希望获取2015-10-20有效的曝光数据
其中有效的曝光记录是指,
* relatedinfo
字段满足数字.数字.数字.数字.数字
的格式,
例如4.4.5.1080100.1
extfield1
字段满足request-字符串,section-数字
的格式,
例如request-b470805b620900ac492bb892ad7e955e,section-4
对于这个问题,小A写出了如下sql脚本:
select *
from track_exps
where ds = '2015-10-20'and relatedinfo rlike '^4.\d+.\d+.\d+.\d+$' and extfield1 rlike '^request.+section-\d+$';
但是由于正则表达式是被包含在sql里面,所以里面的特殊字符需要转义
2.1. hive -e "SQL"
的方式执行
改动如下:
hive -e "
set mapred.job.queue.name=pms;explain select cityid
from track_exps
where ds = '2015-10-20'and relatedinfo rlike '\\^4\\.\\\d\\+\\.\\\d\\+\\.\\\d\\+\\.\\\d\\+\\$' and extfield1 rlike '\\^request\\.\\+section\\-\\\d\\+\\$';"
查看执行计划,可以确定正则表达式解析正确了:
...
predicate:expr: ((relatedinfo rlike '^4.\d+.\d+.\d+.\d+$') and (extfield1 rlike '^request.+section-\d+$'))type: boolean
...
分析如下:
在hive -e "SQL"
的执行方式中,"'正则表达式'"
,正则表达式先被一个单引号括起来,再被一个双引号括起来的,所以正则表达式里面,\\^
的第一个\
用来解析第二个\
,第二个\
才真正起到了转义的作用
2.2. hive -f SQL文件
的方式执行
改动如下:
pms_exps_prepro.sql文件内容如下:
select *
from track_exps
where ds = '2015-10-20'and relatedinfo rlike '\^4\.\\d\+\.\\d\+\.\\d\+\.\\d\+\$' and extfield1 rlike '\^request\.\+section\-\\d\+\$';
分析如下:
不同于hive -e "SQL"
的执行方式,因为是sql文件,所以正则表达式只被一个单引号括起来而已,一个\
就起到了转义的作用了
转载于:https://my.oschina.net/u/2000675/blog/1920416
hive脚本执行方式相关推荐
- shell简介和脚本执行方式
shell简介和脚本执行方式 1.shell简介 Shell是命令解释器(command interpreter),是Unix操作系统的用户接口,程序从用户接口得到输入信息,shell将用户程序及其输 ...
- 『SHELL』--SHELL脚本执行方式(转)
Shell脚本的执行方式: 注明:wd代表"脚本保存的目录" 1.fork 语法:/wd/shell.sh fork是最普通的, 就是直接在脚本里面用/wd/shell.sh来调用 ...
- Linux Shell编程之脚本执行方式
1.新建bash脚本文件 打开命令终端 touch hello.sh vim hello.sh 2.编辑bash文件 #!/bin/bash # this is a test programerech ...
- shell脚本执行方式,更方便更快捷。
在进行linux测试时编写脚本是必不可少的.最近经常使用Linux,感觉太频繁地敲击键盘有些累了,于是想到了Shell脚本.可以把太多的命令写成一个脚本,这样每次执行一遍 shell文件,就可以省去 ...
- linux脚本无法执行命令,为什么Shell脚本执行不成功?原来是这样
Shell脚本语言是linux系统中内置的一门非常强大的语言,非常善于处理操作系统层面的应用,我们从网上下载的很多应用的安装和启动往往都是用Shell脚本语言写的.可是初步开始使用linux的小伙伴是 ...
- shell脚本的执行方式及区别
1.利用直接执行(sh/bash或./)的方式来执行脚本. 2.利用source(或 .)来执行脚本. 这两种方式如果从执行结果来看,并没有什么区别. 下面看个例子: cat name.sh #!/b ...
- linux shell脚本的执行方式与区别
linux shell脚本的执行方式与区别
- hive运行mysql脚本_用java代码调用shell脚本执行sqoop将hive表中数据导出到mysql
1:创建shell脚本 1 touch sqoop_options.sh2 chmod 777 sqoop_options.sh 编辑文件 特地将执行map的个数设置为变量 测试 可以java代码 ...
- debian 重复执行sh_debian 脚本启动方式
同所有的Unix一样,Debian启动时要执行init程序.init的配置文件(/etc/inittab)中指定的第一个执行脚本应该是/etc/init.d/rcS.该脚本执行/etc/rcS.d/目 ...
最新文章
- Swift3.0语言教程获取字符串编码与哈希地址
- DOJO试用手记3--异步通信【原创】
- Linux环境下虚拟环境virtualenv安装和使用(转)
- 什么是操作系统 PV 操作
- 云原生时代下,容器安全的“四个挑战”和“两个关键”
- 全球及中国航空发动机市场动态前景及十四五项目专项调研报告2021-2027年版
- 可编程交换时代就在这里
- 取余运算(信息学奥赛一本通-T1326)
- aspx调试的时候其他机器也可以打开_VSCode 穿越跳板机调试远程代码
- pytorch学习——基本优化思想与最小二乘法
- java mb单位转换_Java计算机硬盘大小转换(B,KB,MB,GB,TB,PB之间的大小转换)
- 智能优化算法:社交网络搜索算法-附代码
- C语言推荐书籍从入门到进阶带你走上大牛之路
- 执行shellcode一直提示illegal instruction
- 磁条卡磁道数据格式检测指南
- gojs开发环境去除水印
- java用户密码修改_java怎么实现修改用户名密码
- 求助:matlab报错:位置 2 处的索引超出数组边界(1)
- AGV搬运机器人「眼睛」的未来:3D视觉导航方案
- 在excel 中如何让一串数字真正的变为时间格式
热门文章
- html5 制作神器,HTML5/Canvas 简单的泡沫生成器
- python鼠标碰撞_获取鼠标指针测试item之间的碰撞
- 内网通免广告_3D打印进军广告发光字领域,成为名副其实的智能打印工厂
- 腾讯翻译君在线翻译怎么翻译整个文件_藏语怎么翻译成中文?这两方法非常好用...
- matlab怎么画单位圆的切线,matlab绘图曲线标注怎么输出角度单位,就是那个小圆圈?...
- python爬虫设计_python爬虫设计(刷访问量,赞)
- mysql 查看索引深度_mysql 学习 - 索引深度理解
- php 容器实现,PHP 依赖注入容器实现
- nodejs mysql 编码_nodejs 查询mysql数据库的数据显示乱码
- 如何理解c语言的变量,C语言中变量的理解.PDF