hive sql
hive是什么
hive是hadoop的一个数据仓库工具,可以将结构化的数据文件映射丞一张数据库表,并提供类SQL的查询功能。可以将sql语句转换为MapReduce任务进行运行。
官方介绍:https://cwiki.apache.org/confluence/display/Hive#Home-UserDocumentation
hive sql语法及函数
一. 语法:
hive sql与sql的语法大部分都是相同的,主要差异点罗列如下:
- hive不支持等值连接
sql中两表内联可以写成:select * from dual a,dual b where a.key = b.key
而在hive sql则为:select * from dual a join dual b on a.key = b.key
- 分号字符识别不智能,解决办法是使用分号的八进制ASCII码进行转义。
- hive sql null和空值处理依赖底层采用什么什么字符表示null
二. 函数
hive sql系统自带函数我们可以通过show functions
来查看,用法及详情用法可以通过desc function upper
,desc function upper
了解。
在工作中常用的几类函数如下:
-
时间函数:
from_unixtime
:转化unix时间戳到当前时区的时间格式unix_timestamp
:获取当前unix时间戳
我们可以通过 from_unixtime+ unix_timestamp 对yyyymmdd和yyyy-mm-dd日期之间的切换--2017-12-05转成20171205 select from_unixtime(unix_timestamp('2017-12-05','yyyy-mm-dd'),'yyyymmdd') from dual;
-
类型转换:
CAST 函数:语法为cast(value AS TYPE)
将 STRING 转为 BIGINT :SELECT CAST('00321' AS BIGINT) FROM table;
-
字符串函数
concat
: 字符串连接concat_ws
:带分隔符字符串连接get_json_object
:json解析split
:分隔字符串 -
条件判断:
IF( Test Condition, True Value, False Value )
如果判断条件为true,则返回True ValueCASE Statement
多条件判断返回COALESCE( value1,value2,... )
返回第一个不为null的值nvl
,NVL2
根据第一个参数是否为空,显示后面参数的值NULLIF
NULLIF(exp1,expr2)函数的作用是如果exp1和exp2相等则返回空(NULL),否则返回第一个值。
三. 建表及数据导入
- 查看表信息
SHOW TABLES '.*s'
列出所有以‘s’结尾的表(正则模式使用Java的规则)DESCRIBE aaa
列出表中的字段信息 - DDL
-- 创建一个名为pokes的表,包括两个字段,第一个字段foo是整型,第二个字段bar是字符串
CREATE TABLE pokes (foo INT, bar STRING);
-- 创建一个名为invites的表,包括两个字段(列):foo、bar,和一个分区字段(列)ds。分区字段是虚拟的字段(列)
CREATE TABLE invites (foo INT, bar STRING) PARTITIONED BY (ds STRING);
-- 删除表
drop table is exists invites;
- 数据导入
-- 本地导入
LOAD DATA LOCAL INPATH './examples/files/kv1.txt' OVERWRITE INTO TABLE pokes;
-- 从其他表导入
INSERT OVERWRITE TABLE events SELECT a.* FROM profiles a;
-- 从其他表导入
FROM pokes t1 JOIN invites t2 ON (t1.bar = t2.bar) INSERT OVERWRITE TABLE events SELECT t1.bar, t1.foo, t2.foo;
上一篇: 在排序数组中查找和为给定值的两个数字
下一篇: hive sql