hive1.2.1实战操作电影大数据!

我采用的是网上的电影大数据,共有3个文件,movies.dat、user.dat、ratings.dat。分别有3000/6000和1百万数据,正好做实验。

下面先介绍数据结构:

RATINGS FILE DESCRIPTION
================================================================================
All ratings are contained in the file "ratings.dat" and are in the
following format:

UserID::MovieID::Rating::Timestamp

- UserIDs range between 1 and 6040
- MovieIDs range between 1 and 3952
- Ratings are made on a 5-star scale (whole-star ratings only)
- Timestamp is represented in seconds since the epoch as returned by time(2)
- Each user has at least 20 ratings
USERS FILE DESCRIPTION

================================================================================
User information is in the file "users.dat" and is in the following
format:

UserID::Gender::Age::Occupation::Zip-code

All demographic information is provided voluntarily by the users and is
not checked for accuracy. Only users who have provided some demographic
information are included in this data set.

- Gender is denoted by a "M" for male and "F" for female
- Age is chosen from the following ranges:

* 1: "Under 18"
* 18: "18-24"
* 25: "25-34"
* 35: "35-44"
* 45: "45-49"
* 50: "50-55"
* 56: "56+"

- Occupation is chosen from the following choices:

* 0: "other" or not specified
* 1: "academic/educator"
* 2: "artist"
* 3: "clerical/admin"
* 4: "college/grad student"
* 5: "customer service"
* 6: "doctor/health care"
* 7: "executive/managerial"
* 8: "farmer"
* 9: "homemaker"
* 10: "K-12 student"
* 11: "lawyer"
* 12: "programmer"
* 13: "retired"
* 14: "sales/marketing"
* 15: "scientist"
* 16: "self-employed"
* 17: "technician/engineer"
* 18: "tradesman/craftsman"
* 19: "unemployed"
* 20: "writer"

MOVIES FILE DESCRIPTION
================================================================================

Movie information is in the file "movies.dat" and is in the following
format:

MovieID::Title::Genres

- Titles are identical to titles provided by the IMDB (including
year of release)
- Genres are pipe-separated and are selected from the following genres:

* Action
* Adventure
* Animation
* Children‘s
* Comedy
* Crime
* Documentary
* Drama
* Fantasy
* Film-Noir
* Horror
* Musical
* Mystery
* Romance
* Sci-Fi
* Thriller
* War
* Western

****************************************************************************************************

二、进入重点

开始建库、建表:

create database movies;
use movies;
//试试建表
CREATE TABLE users(userid:Long);
create table users(userid:Bigint);
CREATE TABLE ratings(userid Int,movieid Int,rating Int,timestamp Timestamp)PARTITIONED BY(dt String) ROW FORMAT DELIMITED FIELDS TERMINATED BY ‘::‘;
出错:FAILED: ParseException line 1:55 Failed to recognize predicate ‘timestamp‘. Failed rule: ‘identifier‘ in column specification

timestamp不支持数据结构里的字符串,改之。

CREATE TABLE ratings(userid Int,movieid Int,rating Int,timestamped Timestamp)PARTITIONED BY(dt String) ROW FORMAT DELIMITED FIELDS TERMINATED BY ‘,‘;

LOAD DATA LOCAL INPATH ‘/home/dyq/Documents/movies/ratings-douhao.dat‘ into table ratings PARTITION(dt="20161201");
hive> select * from ratings limit 10;
OK
1 1193 5 NULL 20161201
1 661 3 NULL 20161201
1 914 3 NULL 20161201
1 3408 4 NULL 20161201
1 2355 5 NULL 20161201
1 1197 3 NULL 20161201
1 1287 5 NULL 20161201
1 2804 5 NULL 20161201
1 594 4 NULL 20161201
1 919 4 NULL 20161201

看来用"::"做分隔符有了麻烦,替换成我喜欢的","

drop table ratings;
CREATE TABLE ratings(userid Int,movieid Int,rating Int,timestamped String)PARTITIONED BY(dt String) ROW FORMAT DELIMITED FIELDS TERMINATED BY ‘,‘;

hive> select * from ratings limit 10;
OK
1 1193 5 978300760 20161201
1 661 3 978302109 20161201
1 914 3 978301968 20161201
1 3408 4 978300275 20161201
1 2355 5 978824291 20161201
1 1197 3 978302268 20161201
1 1287 5 978302039 20161201
1 2804 5 978300719 20161201
1 594 4 978302268 20161201
1 919 4 978301368 20161201
Time taken: 0.122 seconds, Fetched: 10 row(s)

一切OK!hive的语义真是不够强大的说。

下面建立Movies和users表。

CREATE TABLE movies(movieid Int,title String,genres String)PARTITIONED BY(dt String) ROW FORMAT DELIMITED FIELDS TERMINATED BY ‘,‘;

LOAD DATA LOCAL INPATH ‘/home/dyq/Documents/movies/movies-douhao.dat‘ into table movies PARTITION(dt="20161201");

CREATE TABLE users(userid Int,gender String,age Int,occupation String,zip-code String)PARTITIONED BY(dt String) ROW FORMAT DELIMITED FIELDS TERMINATED BY ‘,‘;

FAILED: ParseException line 1:73 cannot recognize input near ‘-‘ ‘code‘ ‘String‘ in column type

CREATE TABLE users(userid Int,gender String,age Int,occupation String,zipcode String)PARTITIONED BY(dt String) ROW FORMAT DELIMITED FIELDS TERMINATED BY ‘,‘;

LOAD DATA LOCAL INPATH ‘/home/dyq/Documents/movies/users-douhao.dat‘ into table users PARTITION(dt="20161201");

hive> select * from users limit 10;
OK
1 F 1 10 48067 20161201
2 M 56 16 70072 20161201
3 M 25 15 55117 20161201
4 M 45 7 02460 20161201
5 M 25 20 55455 20161201
6 F 50 9 55117 20161201
7 M 35 1 06810 20161201
8 M 25 12 11413 20161201
9 M 25 17 61614 20161201
10 F 35 1 95370 20161201
Time taken: 0.168 seconds, Fetched: 10 row(s)

*****************************************************************
创建索引:

create index ratings_userid_index on table ratings(userid) as ‘COMPACT‘ with deferred rebuild;
show index on ratings;
drop index ratings_userid_index on ratings;

create index ratings_movieid_index on table ratings(movieid) as ‘COMPACT‘ with deferred rebuild;
show index on ratings;
drop index ratings_movieid_index on ratings;

加索引前的join:
select movies.movieid,movies.title,ratings.rating from movies join ratings on(movies.movieid=ratings.movieid);
Time taken: 40.721 seconds, Fetched: 1000209 row(s)

加索引后的join:
Time taken: 40.816 seconds, Fetched: 1000209 row(s)

查询某一个值:
select movies.movieid,movies.title,ratings.rating from movies join ratings on(movies.movieid=ratings.movieid) where movies.movieid=2716;
Time taken: 33.834 seconds, Fetched: 2181 row(s)

索引后:
drop index ratings_movieid_index on ratings;
drop index ratings_userid_index on ratings;
select movies.movieid,movies.title,ratings.rating from movies join ratings on(movies.movieid=ratings.movieid) where movies.movieid=2716;

Time taken: 29.428 seconds, Fetched: 2181 row(s)

时间: 2024-10-05 23:01:09

hive1.2.1实战操作电影大数据!的相关文章

中国电影产业在大数据方面的应用

中国电影产业已进入从制作到播出的全数字化时代.多位电影专家和学者认为,大数据新媒体技术还将给中国电影产业带来新机遇. 第23届中国金鸡百花电影节副主席康健民在此间表示,中国电影在完成从无声电影到有声电影,彩色胶片替代黑白胶片的两次伟大变革后,如今已进入全数字化时代. “中国电影越来越好看和好玩,除了有优秀的剧本和演员的逼真表演外,还在于新技术对电影的丰富.尤其是运用大量电脑特技制作出来的3D电影等,深受广大影迷喜爱.”康健民说. 多位专家在此间举行的“中国电影科技论坛”上认为,新媒体技术近些年快

电影娱乐业的变化:大数据和云引发了电影业的变革

我们已经讨论过很多大数据和云计算是如何通过它的敏锐性.灵活性已经竞争中所特有的优势来让其他商业领域发生变化的. 这种改变所带来的益处遍布其他行业,而在这些变革中尤为值得关注的是:娱乐业.在最近的颁奖典礼上,让我们看看科技是如何变革这个行业的--甚至颁奖典礼自身. 娱乐业和大数据 使用大数据来进行研究--被提名者的数量.其他颁奖典礼上的获奖者,来自于博彩网站上的信息--分析师可以在颁奖典礼之前,预测出主要获奖者的名单. 电影制片厂和分销商这样的电影公司正在利用大数据来决定如何更有效地发行一部电影,

你是大数据电影中的主角吗?

主角:英雄 你就是这部电影的主角.你正以超乎想象的方式挑战着技术领域.现在我们用的手机已经远比<星际迷航>中的先进,也许在未来的某一天拥有"进取号"也并不是遥不可及的事.这归功于我们现在高速的系统处理速度,今天的大数据云系统将以更深远.更迅猛的方式,帮助你超越自己. 所以,谢谢大数据在我们身边,一直保持着真我本色.不断挑战我们,质询我们,激励我们去超越自己.是的,我们将继续为大数据提供更多的东西. 配角:恶棍和坏人们 大数据在日渐成熟并不断证明着自己,但是质疑的声音从未停歇

怎样查找自己想用的大数据?

作者:曹婷婷 链接:https://www.zhihu.com/question/19766160/answer/92693568 来源:知乎 著作权归作者所有.商业转载请联系作者获得授权,非商业转载请注明出处. 首先说下,找各行各业的行业报告的用途是什么? 如果是for公司的战略决策,或者产品方向,或者市场策略,或者产品设计,或者广告定价,或者投资,或者任何方向,不同的部分不同的人对行业报告的深浅度需求不一致.所以会需要不同层次的行业报告. 另外,行业报告良莠不齐,需要有一定的经验和对行业的理

基于Hadoop2.0、YARN技术的大数据高阶应用实战(Hadoop2.0\YARN\Ma

Hadoop的前景 随着云计算.大数据迅速发展,亟需用hadoop解决大数据量高并发访问的瓶颈.谷歌.淘宝.百度.京东等底层都应用hadoop.越来越多的企 业急需引入hadoop技术人才.由于掌握Hadoop技术的开发人员并不多,直接导致了这几年hadoop技术的薪水远高于JavaEE及 Android程序员. Hadoop入门薪资已经达到了8K以上,工作1年可达到1.2W以上,具有2-3年工作经验的hadoop人才年薪可以达到30万—50万. 一般需要大数据处理的公司基本上都是大公司,所以学

社交关系与大数据的结合

大家还没搞清楚PC的时候,移动互联网来了,还没搞清楚移动互联网的时候,大数据来了. "有个不太靠谱的命题:如何让赵本山和迈克尔乔丹搭上关系?其实很简单,通过分析两个人的社交圈子,兴趣爱好等,最终可以找出一条线路能让他们两个人认识,这就是隐藏其中的大数据魅力之一点点-- 随着互联网的冲击,UGC(用户产生内容)不断发展,社交网络已经不断普及并深入人心,用户可以随时随地在网络上分享内容,由此产生了海量的用户数据.这些数据并不是我们想象中的那样冷冰冰.枯燥的数据,而是更加活生生.有趣的数据:这些数据不

华为内部关于大数据的一篇好文

科技的进步在很多的时候总会超出我们的想象,如果未来我们一个人拥有的电脑设备超过现在全球现在计算能力的总和,一个人产生的数据量超过现在全球数据 量的总和,甚至你的宠物小狗产生的信息量都超过现在全球数据量的总和,世界会发生什么呢?阅读本文,大数据(Big Data)会告诉你一个充满奇幻色彩的世界. 一.详解时髦词汇:大数据 似乎一夜之间,大数据(Big Data)变成一个IT行业中最时髦的词汇. 首先,大数据不是什么完完全全的新生事物,Google的搜索服务就是一个典型的大数据运用,根据客户的需求,

跟风舞烟学大数据可视化-Echarts从入门到上手实战

跟风舞烟学大数据可视化-Echarts从入门到上手实战 课程观看地址:http://www.xuetuwuyou.com/course/180 课程出自学途无忧网:http://www.xuetuwuyou.com 课程讲师:风舞烟 课时数:三个模块,共70课时   一.课程特色: 1.最全的Echarts课程讲解     70学时课时量,360度全方位,无死角的课程设计,让你通透Echarts可视化技术 2.最适合小白学员学习的课程,没有之一     只要你了解一点基本的Html,CSS,Ja

老李分享大数据生态圈

老李分享大数据生态圈 大数据本身是个很宽泛的概念,Hadoop生态圈(或者泛生态圈)基本上都是为了处理超过单机尺度的数据处理而诞生的.你可以把它比作一个厨房所以需要的各种工具.锅碗瓢盆,各有各的用处,互相之间又有重合.你可以用汤锅直接当碗吃饭喝汤,你可以用小刀或者刨子去皮.但是每个工具有自己的特性,虽然奇怪的组合也能工作,但是未必是最佳选择.         大数据,首先你要能存的下大数据. 传统的文件系统是单机的,不能横跨不同的机器.HDFS(Hadoop Distributed FileSy