hive sql

hive是什么

hive是hadoop的一个数据仓库工具,可以将结构化的数据文件映射丞一张数据库表,并提供类SQL的查询功能。可以将sql语句转换为MapReduce任务进行运行。
官方介绍:https://cwiki.apache.org/confluence/display/Hive#Home-UserDocumentation

hive sql语法及函数

一. 语法:
hive sql与sql的语法大部分都是相同的,主要差异点罗列如下:

  1. 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
  2. 分号字符识别不智能,解决办法是使用分号的八进制ASCII码进行转义。
  3. hive sql null和空值处理依赖底层采用什么什么字符表示null

二. 函数
hive sql系统自带函数我们可以通过show functions来查看,用法及详情用法可以通过desc function upper ,desc function upper 了解。
在工作中常用的几类函数如下:

  1. 时间函数:
    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;
    
  2. 类型转换:
    CAST 函数:语法为cast(value AS TYPE)
    将 STRING 转为 BIGINT : SELECT CAST('00321' AS BIGINT) FROM table;

  3. 字符串函数
    concat: 字符串连接
    concat_ws:带分隔符字符串连接
    get_json_object:json解析
    split:分隔字符串

  4. 条件判断:
    IF( Test Condition, True Value, False Value ) 如果判断条件为true,则返回True Value
    CASE Statement 多条件判断返回
    COALESCE( value1,value2,... ) 返回第一个不为null的值
    nvl,NVL2 根据第一个参数是否为空,显示后面参数的值
    NULLIF NULLIF(exp1,expr2)函数的作用是如果exp1和exp2相等则返回空(NULL),否则返回第一个值。

三. 建表及数据导入

  1. 查看表信息
    SHOW TABLES '.*s' 列出所有以‘s’结尾的表(正则模式使用Java的规则)
    DESCRIBE aaa 列出表中的字段信息
  2. 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;
  1. 数据导入
-- 本地导入
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;
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值