HiveQ与传统SQL差异
1. hive内连接支持什么格式?
• SQL中对两表内联可以写成:
select * from dual a,dual b where a.key =
b.key;
或者:
SELECT t1.a1 as c1, t2.b1 as c2FROM t1,
t2 WHERE t1.a2 = t2.b2
•
Hive中应为
select * from dual a join dual b
on a.key = b.key;
2.
分号符号的使用
• 分号是SQL语句结束标记,在HiveQL中也是,但是在HiveQL中,对分号的识别没有那么智慧,例如:
select
concat(key,concat(';',key)) from dual;
• 但HiveQL在解析语句时提示:
FAILED: Parse Error: line 0:-1 mismatched
input '<EOF>' expecting ) in function specification
解决的办法是,使用分号的八进制的ASCII码进行转义,那么上述语句应写成:
select
concat(key,concat('\073',key)) from dual;
3.
is [not] null的使用
•
SQL中null代表空值.
• 在HiveQL中String类型的字段若是空(empty)字符串, 即长度为0, 那么对它进行IS NULL的判断结果是False.
4.
Hive不支持使用insert语句将现有数据插入现有表或分区中
• Insert仅支持覆盖重写整个表或分区的操作,例如:
INSERT OVERWRITE TABLE t1 SELECT * FROM t2;
• 使用load语句插入新数据。
5.
Hive不支持Insert into表values(),Update,Delete操作
因为数据时存储在hdfs中,所以不支持这些操作,同时hive就不需要很复杂的锁机制来读写数据。
6.
hive支持嵌入mapreduce程序,来处理复杂逻辑
• 例如:
FROM (
MAP doctext USING 'python wc_mapper.py' AS (word,
cnt)
FROM
docs
CLUSTER
BY word
) a
REDUCE word, cnt USING 'python
wc_reduce.py';
--doctext: 是输入
--word, cnt: 是map程序的输出
--CLUSTER BY: 将wordhash后,又作为reduce程序的输入
• 并且map程序、reduce程序可以单独使用,如:
FROM (
FROM
session_table
SELECT
sessionid, tstamp, data
DISTRIBUTE
BY sessionid SORT BY tstamp
) a
REDUCE sessionid, tstamp, data
USING 'session_reducer.sh';
7.
hive支持将转换后的数据直接写入不同的表,还能写入分区,hdfs,和本地目录
• FROM t1
INSERT
OVERWRITE TABLE
t2
SELECT
t3.c2, count(1)
FROM
t3
WHERE
t3.c1 <= 20
GROUP
BY t3.c2
• INSERT OVERWRITE DIRECTORY '/output_dir'
SELECT
t3.c2, avg(t3.c1)
FROM
t3
WHERE
t3.c1 > 20 AND t3.c1 <= 30
GROUP
BY t3.c2
• INSERT OVERWRITE LOCAL DIRECTORY '/home/dir'
SELECT
t3.c2, sum(t3.c1)
FROM
t3
WHERE
t3.c1 > 30
GROUP
BY t3.c2; FROM t1
HiveQ与传统SQL差异的更多相关文章
- sql差异
类别 MS SQL Server My SQL PG SQL Oracle Access 自增 identity(1,1) auto_increment ALTER TABLE 'tableNam ...
- Docker概念学习系列之Docker与传统虚拟机差异(4)
不多说,直接上干货! 见[博主]撰写的https://mp.weixin.qq.com/s/YihjPONUcUi4b_7RC8oLYw 传统虚拟化是在硬件层面实现虚拟化,需要有额外的虚拟机管理应 ...
- mysql 和 sqlserver sql差异比较
mysql:select * from table_name limit 100,200;--取出从100到200的数据 获取时间:mysql:now() mysql tinyint(0,1) → b ...
- Mysql 和 SQLServer 使用SQL差异比较
查询前100条数据 #mysql ; #sqlserver * from table_name ; 从数据库.表 定位表 #mysql写法:库名.表名 select password from Inf ...
- hive(II)--sql考查的高频问题
在了解别人hive能力水平的时候,不管是别人问我还是我了解别人,有一些都是必然会问的东西.问的问题也大都大同小异.这里总结一下我遇到的那些hive方面面试可能涉及的问题 1.行转列(列转行) 当我们建 ...
- SQL Server 虚拟化(1)——虚拟化简介
本文属于SQL Server虚拟化系列 前言: 现代系统中,虚拟化越来越普遍,如果缺乏对虚拟化工作原理的理解,那么DBA在解决性能问题比如降低资源争用.提高备份还原速度等操作时就会出现盲点.所以基于本 ...
- [转]Azure 表存储和 Windows Azure SQL Database - 比较与对照
本文转自:https://msdn.microsoft.com/library/azure/jj553018 更新时间: 2014年10月 作者:Valery Mizonov 和 Seth Manhe ...
- 5G时代,为什么NoSQL和SQL存在短板?
01 介绍 当今的通信服务提供商(CSP)需要能够在处理海量复杂的数据的同时,不会下降或者减慢网路响应速度和可靠性.5G时代,设备和用户数量呈指数级增长,这对业务支持服务(BSS)提出了新需求,也成为 ...
- SQL Azure (16) 创建PaaS SQL Azure V12数据库
<Windows Azure Platform 系列文章目录> 本文介绍的是国内由世纪互联运维的Azure China 最新的Azure PaaS SQL Database(SQL Azu ...
随机推荐
- 直接用bat命令对Inno Setup的脚本文件.iss进行编译
直接用bat命令对Inno Setup的脚本文件.iss进行编译 2010-06-17 15:17 qjn0059 | 浏览 2163 次 编程语言外语学习 分享到: 2010-06-29 11: ...
- magento -- 添加新产品时状态默认为激活,库存状态默认为有库存
添加新产品时状态默认为激活 打开文件/app/code/core/Mage/Catalog/Model/Product/Status.php,注释掉“Please Select” /** * Retr ...
- 表视图控制器(TableViewController)(一)
1 创建一个UITableViewController并展示简单数据 1.1 问题 有很多移动客户端的应用都是采用表的形式来展示数据,因为表视图能使数据看起来更规整.更有调理,比如微信界面就是使用的表 ...
- yii 创建步骤
1.首先,下载yii框架,解压到www目录下 2.配置php的环境,在控制台输入php,显示下划线表示,路径配置成功 3.在控制台,切换到yii/framework下,运行yiic webapp .. ...
- 四 GPU 并行编程的存储系统架构
前言 在用 CUDA 对 GPU 进行并行编程的过程中,除了需要对线程架构要有深刻的认识外,也需要对存储系统架构有深入的了解. 这两个部分是 GPU 编程中最为基础,也是最为重要的部分,需要花时间去理 ...
- 解决"waitForCondition(LockCondition) timed out (identity=23, status=0). CPU may be pegged. trying again."问题
前几天在跑游戏引擎的时候,遇到了一个比较奇怪的问题,logcat不断地打印下面的错误: waitForCondition(LockCondition) timed out (identity=23, ...
- phpstudy linux (lnmp,lamp)一键安装
phpStudy for Linux 支持Apache/Nginx/Tengine/Lighttpd, 支持php5.2/5.3/5.4/5.5切换 已经在centos-6.5,debian-7.4. ...
- POJ 1502 MPI Maelstrom
MPI Maelstrom Time Limit : 2000/1000ms (Java/Other) Memory Limit : 20000/10000K (Java/Other) Total ...
- ZOJ 1029 Moving Tables
原题链接 题目大意:走廊两边排列了400个房间,要在两个房间之间搬桌子.搬桌子的时候会占用一部分走廊,有冲突的话要回避.求最快搬完的时间. 解法:开辟一个数组,每占用一段走廊,就把相应的房间号的元素加 ...
- JS开发者常用的10个Sublime Text插件
Sublime Text 是每个开发者工具箱中都应该有的一个强大的应用.它是一个跨平台的.高定制化的.高级的文本编辑器,在功能强大的 集成开发环境(众所周知地消耗资源)和类似于 Vim 或 Emacs ...