hive登陆
创建表
CREATE TABLE u_data(
userid INT,
movieid INT,
rating INT,
unixtime STRING)
ROW FORMATDELIMITED
FIELDS TERMINATEDBY '\t'
STORED AS TEXTFILE;
ROW FORMAT DELIMITED表示不限制每行的具体格式
FIELDS TERMINATED BY '\t'表示以制表符来分割字段
STOED AS TEXTFILE是使用文本文件的格式来存储数据
导入数据
wget
看看是否有这个文件了
解压缩
导入数据
SELECT * FROM u_data LIMIT 10;
SELECT COUNT(*)FROM u_data;
聚合查询
通过MOVIEID分组,然后写出各组的平均等级,这里使用的AVG函数是组内平均数
SELECT movieid,avg(rating) FROM u_datagroup by movieid;
...
统计
统计各电影投票次数
SELECT movieid,count(rating) FROM u_datagroup by movieid;
...
统计每天每部电影的投票数
CAST(A AS TYPEB)是把A转换成TYPEB类型
FROM_UNIXTIME是吧一个BIGINT转成日期格式,后边可以跟格式模板
SELECT movieid,count(rating),from_unixtime(cast(unixtime as bigint),'yyyy-MM-dd') FROM u_data group by movieid,from_unixtime(cast(unixtime as bigint),'yyyy-MM-dd');
以此类推,可以写出各种时间和电影的交叉统计,请试写按年中的周数来统计的各部电影的投票数、平均得分统计
提示:
日期转周函数: weekofyear语法: weekofyear(string date) 返回值: int说明: 返回日期在当前的周数。
统计每天时段(按小时划分)投票情况,及投票平均分
SELECT count(rating),avg(rating),from_unixtime(cast(unixtimeas bigint),'HH') FROM u_data group by from_unixtime(cast(unixtime as bigint),'HH');
排名
按平均分排出TOP10
select movieid,avg(rating) ar from u_datagroup by movieid order by ar desc limit 10;
删除表
drop table u_data;
Web浏览
通过cloudera可以很方便地配置与管理hadoop集群
请看
实验三
在集群上跑wordcount,出来了200个part,很多是空的。于是先get到本地,再用Linux删掉空文件。
find . -name "*" -type f -size 0c | xargs -n 1 rm -f
也可以直接看内容
hadoop dfs -cat /output/*
实验四是IBM的BigSQL,参见以下网站。
BigSQL是IBM基于Hadoop的定制数据库。用简单的SQL语言就可以操作,较HIVE,HBASE简单。
下载
到
下载镜像文件。装到虚拟机VMware里。
文档见下列网址