hive常用命令

1.显示数据库/表的信息:
创建数据库hive> CREATE DATABASE [IF NOT EXISTS] userdb;
切换数据库的时候可以输入:use database_name;
查看所有数据库的时候可以输入:show databases;
查看所有表的时候可以输入:show tables;
看表结构的时候可以输入:describe tab_name;

Hive下查看数据表信息的方法
方法1:查看表的字段信息
desc table_name;
方法2:查看表的字段信息及元数据存储路径
desc extended table_name;
方法3:查看表的字段信息及元数据存储路径
desc formatted table_name;
方法4:查看建表语句及其他详细信息的方法
show create table table_name;
备注:查看表元数据存储路径时,推荐方法3,信息比较清晰。

参考: http://blog.youkuaiyun.com/babyfish13/article/details/52055927

2.数据导入与导出:
- 数据导入的四种方式
(1)从本地文件系统中导入数据到Hive表;
(2)从HDFS上导入数据到Hive表;
(3)从别的表中查询出相应的数据并导入到Hive表中;
(4)在创建表的时候通过从别的表中查询出相应的记录并插入到所创建的表中。
参考: http://blog.youkuaiyun.com/lifuxiangcaohui/article/details/40588929
- 数据导出的三种方式:
根据导出的地方不一样,将这些方式分为三种:
(1)导出到本地文件系统;
(2)导出到HDFS中;
(3)导出到Hive的另一个表中。
参考: http://blog.youkuaiyun.com/lifuxiangcaohui/article/details/40589881

例如导出到本地文件系统
hive > insert overwrite local directory ‘/home/wyp/wyp’
> select * from wyp;

3.将多行合并为一行
语法: concat_ws(string SEP, string A, string B…)
返回值: string
说明:返回输入字符串连接后的结果,SEP表示各个字符串间的分隔符
举例:
hive> select concat_ws(‘,’, ‘abc’,’def’,’gh’) from lxw_dual;
abc,def,gh
参考:http://blog.youkuaiyun.com/wisgood/article/details/17376393#t76

4.将一行拆分为多行
lateral view用于和split、explode等UDTF一起使用的,能将一行数据拆分成多行数据,在此基础上可以对拆分的数据进行聚合,lateral view首先为原始表的每行调用UDTF,UDTF会把一行拆分成一行或者多行,lateral view在把结果组合,产生一个支持别名表的虚拟表。
参考: http://www.cnblogs.com/judylucky/p/3713774.html
http://jingyan.baidu.com/article/fcb5aff780a456edaa4a710c.html

5.分组排序
语法:row_number() over (partition by 字段a order by 计算项b desc ) rank
–这里rank是别名
partition by:类似hive的建表,分区的意思;
order by :排序,默认是升序,加desc降序;
这里按字段a分区,对计算项b进行降序排序

参考: http://blog.sina.com.cn/s/blog_6676d74d0102vm2c.html

6.数据类型转换
例如:将s转换成字符串型 …cast( s as string)….

7.求并集操作:UNION ALL
UNION用于联合多个SELECT语句的结果集,合并为一个独立的结果集。当前只能支持UNION ALL(bag union)。不消除重复行。每个select语句返回的列的数量和名字必须一样,否则,一个语法错误会被抛出。

如果必须对UNION的结果做一些额外的处理,整个语句可以被嵌入在FROM子句中,象下面这样
SELECT *
FROM (
select_statement
UNION ALL
select_statement
) unionResult

参考: http://www.cnblogs.com/ggjucheng/archive/2013/01/15/2861574.html

8.Hive 中的条件语句
条件函数
1. If函数: if
语法: if(boolean testCondition, T valueTrue, T valueFalseOrNull)
返回值: T
说明: 当条件testCondition为TRUE时,返回valueTrue;否则返回valueFalseOrNull
举例:
hive> select if(1=2,100,200) from lxw_dual;
200
hive> select if(1=1,100,200) from lxw_dual;
100
2. 非空查找函数: COALESCE
语法: COALESCE(T v1, T v2, …)
返回值: T
说明: 返回参数中的第一个非空值;如果所有值都为NULL,那么返回NULL
举例:
hive> select COALESCE(null,’100’,’50′) from lxw_dual;
100
3. 条件判断函数:CASE
语法: CASE a WHEN b THEN c [WHEN d THEN e]* [ELSE f] END
返回值: T
说明:如果a等于b,那么返回c;如果a等于d,那么返回e;否则返回f
举例:
hive> Select case 100 when 50 then ‘tom’ when 100 then ‘mary’else ‘tim’ end from lxw_dual;
mary
hive> Select case 200 when 50 then ‘tom’ when 100 then ‘mary’else ‘tim’ end from lxw_dual;
tim
4. 条件判断函数:CASE
语法: CASE WHEN a THEN b [WHEN c THEN d]* [ELSE e] END
返回值: T
说明:如果a为TRUE,则返回b;如果c为TRUE,则返回d;否则返回e
举例:
hive> select case when 1=2 then ‘tom’ when 2=2 then ‘mary’ else’tim’ end from lxw_dual;
mary
hive> select case when 1=1 then ‘tom’ when 2=2 then ‘mary’ else’tim’ end from lxw_dual;
tom

参考: http://www.superwu.cn/2015/05/25/2357/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值