您的位置:首页 > 其它

第十三天:hive的基本操作

2015-02-07 11:17 162 查看
hadoop和hive的数据处理泪流成

hive Cli常用操作

需求

场景:统计每日用户登录总数

每分钟的原始日志内容如下:
http://www.baidu.com/uid=123&ip=192.168.2.2
假如只有两个字段uid和ip,其中uid是用户的uid

是用户的uid,是用户的唯一标识,ip是用户的

登录ip,每日的记录行数是10亿行,要统计出一天用户登录的总数

处理流程

1、建表

那么我们首先要在hive里面建立一张表,建表语句如下:

表名-login

fields 列分分隔符号

create table login(

uid string,

ip string

)

partitioned by (dt string)

row format delimited

fields terminated by ','

stored as textfile;

其实表名是login,字段之间以,隔开,存储是text,其次

还以dt这个字段作为分区

创建成功之后,会看到hdfs上创建了

/user/hive/warehouse/login这个目录

2、入库

格式完毕,就可以把数据入库到hive了。假设几天

执行的命令

load data local inpath '/hadoop/hive0.9/testHive/test*' overwrite into

table login partition (dt='20150207')

执行成功

3、分析

在hive执行一下语句

select count(distinct uid) from login

where dt='20150207';

使用dt这个分区条件查询,就可以避免hive去查询其他分区的文件

这样减少IO操作,这个是hive分区很重要的特性,也是已

天为单位,作为login表分区的重要意义。

执行完毕后,就可以在命令里出现结果,一般通过管道执行hive shell命令

,读取管道的内容,把结果入库到mysql里就完成了分析了、

分区不能做的太多。

一般是以天做为分区。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: