总结命令行02:Hive

本文介绍了Hive的基本数据操作,包括数据类型的使用、日期时间处理函数、表的创建与管理、数据加载与查询等核心内容。此外还详细说明了Hive与MySQL在分区上的差异。
一、概述:
       Hive提供了很多的函数,可以在命令行下show functions罗列所有的函数,你会发现这些函数名与mysql的很相近,绝大多数相同的,可通过describe function functionName 查看函数使用方法。hive支持的数据类型很简单就INT(4 byte integer),BIGINT(8 byte integer),FLOAT(single precision),DOUBLE(double precision),BOOLEAN,STRING等原子类型,连日期时间类型也不支持,但通过to_date、unix_timestamp、date_diff、date_add、date_sub等函数就能完成mysql同样的时间日期复杂操作。
如下示例:
1
select * from tablename where to_date(cz_time) > to_date('2050-12-31');
2
select * from tablename where unix_timestamp(cz_time) > unix_timestamp('2050-12-31 15:32:28');

分区
hive与mysql分区有些区别,mysql分区是用表结构中的字段来分区(range,list,hash等),而hive不同,他需要手工指定分区列,这个列是独立于表结构,但属于表中一列,在加载数据时手动指定分区。

创建表

1
hive> CREATE TABLE pokes (foo INT, bar STRING COMMENT 'This is bar'); 

创建表并创建索引字段ds

1
hive> CREATE TABLE invites (foo INT, bar STRING) PARTITIONED BY (ds STRING); 

显示所有表

1
hive> SHOW TABLES;

按正条件(正则表达式)显示表,

1
hive> SHOW TABLES '.*s';

表添加一列 

1
hive> ALTER TABLE pokes ADD COLUMNS (new_col INT);

添加一列并增加列字段注释

1
hive> ALTER TABLE invites ADD COLUMNS (new_col2 INT COMMENT 'a comment');

更改表名

1
hive> ALTER TABLE events RENAME TO 3koobecaf;

删除数据表

1
hive> DROP TABLE pokes;

元数据存储

将本地文件中的数据加载到表中

1
hive> LOAD DATA LOCAL INPATH './examples/files/kv1.txt' OVERWRITE INTO TABLE pokes; 

加载本地数据,同时给定分区信息

1
hive> LOAD DATA LOCAL INPATH './examples/files/kv2.txt' OVERWRITE INTO TABLE invites PARTITION (ds='2008-08-15');

加载DFS数据 ,同时给定分区信息

1
hive> LOAD DATA INPATH '/user/myname/kv2.txt' OVERWRITE INTO TABLE invites PARTITION (ds='2008-08-15');

1
The above command will load data from an HDFS file/directory to the table. Note that loading data from HDFS will result in moving the file/directory. As a result, the operation is almost instantaneous. 

SQL 操作

按先件查询

1
hive> SELECT a.foo FROM invites a WHERE a.ds='';

将查询数据输出至目录

1
hive> INSERT OVERWRITE DIRECTORY '/tmp/hdfs_out' SELECT a.* FROM invites a WHERE a.ds='';

将查询结果输出至本地目录

1
hive> INSERT OVERWRITE LOCAL DIRECTORY '/tmp/local_out' SELECT a.* FROM pokes a;

选择所有列到本地目录 

1
hive> INSERT OVERWRITE TABLE events SELECT a.* FROM profiles a;

将一个表的统计结果插入另一个表中

1
hive> FROM invites a INSERT OVERWRITE TABLE events SELECT a.bar, count(1) WHERE a.foo > 0 GROUP BY a.bar;
2
hive> INSERT OVERWRITE TABLE events SELECT a.bar, count(1) FROM invites a WHERE a.foo > 0 GROUP BY a.bar;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值