HiveQ与传统SQL差异
2015-05-18 14:30
302 查看
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 t1INSERT
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
相关文章推荐
- hive和spark-sql计算stddev的结果差异
- sql*loader的直接加载方式和传统加载方式的性能差异
- 比较使用sql*loader的直接加载方式和传统加载方式的性能差异
- 对比Pig、Hive和SQL,浅看大数据工具之间的差异 -- 转发
- Hive常用的SQL命令操作
- Spark SQL来读取现有Hive中的数据
- hive ETL之电商零售行业-推荐系统sql
- Spark SQL 与 Spark SQL on Hive 区别
- Kylin 与 Spark SQL相比,有哪些差异和优势
- charindex()实现字段值分割-------------基于非传统思维模式的sql编程
- jQuery中$(document).ready()方法与传统JavaScript中的window.onload的差异
- SQLITE与SQL SERVER中SQL语句的差异
- 实习用到的hive 相关sql
- pyspark执行hivesqlstr
- 实战 - hive 数据库SQL操作
- Hive基础sql语法
- Hive学习之路 (六)Hive SQL之数据类型和存储格式
- oracle 9i与11g 服务端tnsping与sqlplus命令的使用的一些差异
- Hive Projects_1. SQL Windowing & 分区表函数 -- 带完善
- Spark SQL与Hive on Spark的比较