总结命令行02:Hive

来源:互联网 发布:数据挖掘的研究现状 编辑:程序博客网 时间:2024/05/29 17:36
一、概述:
       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;
阅读全文
0 0
原创粉丝点击
热门IT博客
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 金猪下崽app 金猪下崽害人 金猪下崽骗术 小猪崽多少钱一个 山东仔猪批发 崽猪行情 猪宝宝起名大全 猪男宝宝名字 猪宝宝起名 猪宝宝名字 猪宝宝起名宜用字 正月的猪 猪年 猪年宝宝起名大全 猪年男宝宝名字 2019猪年满分女孩名 2019猪年图片 2019猪年 2018年农村养200头猪补贴多少 猪年女宝宝名字 养几头猪一年能挣5万 50头猪一年成本大约多少 92年男猴和95年女猪结婚好不好 猪年公交车票发售 2019猪年生肖表图片 猪年男宝宝起名大全 猪年宝宝取名 2019年什么猪 猪年男孩取名字大全 猪年宝宝起名宜用字 今年猪年 91年男羊跟95年女猪配不配 猪年宝宝名字 2019猪年男宝宝名字 今年猪年吗 猪年是哪年 猪年本命佛 猪年生人 猪年命运 猪年是什么年 猪年是哪一年