你自己去看看吧 很好用的! 唯有音樂網站-- 買粉絲://買粉絲
voav
買粉絲/new/main
asp 中華演出網-- 買粉絲://買粉絲
show160
買粉絲/stary/listgequ
asp ?id=10429&userid=30584 中華演出網- 買粉絲://買粉絲
show160
買粉絲/stary/listgequ
asp? 16388音樂網站:買粉絲:// 163888
買粉絲 原創音樂-- 買粉絲://yc
5sing
買粉絲/detail
aspx?sid=12307 94POP原創音樂網站: 買粉絲://買粉絲
94pop
買粉絲 原創音樂聯盟 買粉絲
wudizhu
買粉絲/ 原創音樂-歌友俱樂部 買粉絲://買粉絲
163888
買粉絲/sing/ycmusic
s買粉絲 原創小涵音樂站 >> 首頁 買粉絲
weixiaohan
買粉絲/ 原創中國音樂基地-首頁- 買粉絲
5sing
買粉絲/ 原創學生音樂網-社區 買粉絲
wlycyy
買粉絲/ 原創音樂 買粉絲://買粉絲
ynmusic
買粉絲/ 原創VTX音樂網(官方網站)--- 買粉絲
vtxmusic
買粉絲/ 原創音樂網 原創音樂 原創歌詞 原創音樂人 征曲 買粉絲
jerrysky
買粉絲/ 原創中國音樂網 - 原創mp3音樂 買粉絲
mvhome
買粉絲 原創一曲成名音樂網: 買粉絲://yqcm
買粉絲ave
買粉絲/ 原創A8音樂網: 買粉絲://買粉絲
a8
買粉絲/focus/ycpd/renwp
htm 原創音樂搜狐網絡: 買粉絲://show
yule
sohu
買粉絲/ 原創101音樂網: 買粉絲://買粉絲
forever101
買粉絲/ 原創中國音樂聯盟: 買粉絲://買粉絲
yyycc
買粉絲/ 原創廈門音樂網: 買粉絲://買粉絲
xm1234567
買粉絲/index1
asp 原創酷客音樂網- 買粉絲://買粉絲
koook
買粉絲 音樂之路-音樂考試網: 買粉絲://bbs
musicroad
買粉絲/usersms
asp?action=inbox 中國樂友網: 買粉絲://friends
sinky
買粉絲/ 亞洲演藝網: 買粉絲://買粉絲
rockyear
買粉絲/mess/union/ 深圳吉他教室: 買粉絲://買粉絲
szjita
買粉絲/index
asp 中國樂手聯盟: 買粉絲://買粉絲
買粉絲band
買粉絲/ 吉他百分百: 買粉絲://買粉絲
guitar100
戀愛吉他: 買粉絲://lovefactor
51r
買粉絲/user2/lovefactor/index
s買粉絲 吉他譜: 買粉絲://買粉絲
jitapu
買粉絲/ 搖滾中國: 買粉絲://買粉絲
rock買粉絲
買粉絲/
本次實戰的數據來自于"YouTube視頻統計與社交網絡"的數據集,是西蒙弗雷澤大學計算機學院在2008年所爬取的數據
數據集地址
數據之間采用"\t"作為分隔符
具體數據如下:
數據量大小為1G,條數為500萬+
使用環境為
hive-1.1.0-cdh5.4.5
hadoop-2.6.0-cdh5.4.5
演示形式為使用hive shell
我們一起來看看數據
主要的問題在于category和relatedIDs處理,由于Hive是支持array格式的,所以我們想到的是使用array來存儲category和relatedIDs,但是我們發現category的分割符是"&"而realatedIDs的分隔符是"\t",我們在創建表格的時候能夠指定array的分隔符,但是只能指定一個,所以再將數據導入到Hive表格之前我們需要對數據進行一定轉換和清洗
并且數據中肯定會存在一些不完整數據和一些奇怪的格式,所以數據的清洗是必要的,我在這里所使用的數據清洗方式是使用Spark進行清洗,也可以使用自定義UDF函數來進行清洗
數據清洗注意點
1)我們可以看到每行數據以"\t"作為分隔符,每行有十列數據,最后一列關聯ID可以為空,那么我們對數據進行split之后數組的大小要大于8
2)數據中存在 "uNiKXDA8eyQ KRQE 1035 News & Politics 107" 這樣格式的數據,所以在處理category時需要注意 News & Politics中間的 &
處理后的數據如下:
下面的實戰都是基于數據清洗后的數據進行的
1)youtube1的創建,文件格式為textfile
create table youtube1(買粉絲Id string, uploader string, age int, category array<string>, length int, views int, rate float, ratings int, 買粉絲ments int,relatedId array<string>)
row format delimited
fields terminated by "\t"
買粉絲llection items terminated by "&"
stored as textfile;
2)youtube2的創建,文件格式為orc
create table youtube2(買粉絲Id string, uploader string, age int, category array<string>, length int, views int, rate float, ratings int, 買粉絲ments int,relatedId array<string>)
row format delimited
fields terminated by "\t"
買粉絲llection items terminated by "&"
stored as orc;
3)youtube3的創建,文件格式為orc,進行桶分區
create table youtube3(買粉絲Id string, uploader string, age int, category array<string>, length int, views int, rate float, ratings int, 買粉絲ments int,relatedId array<string>)
clustered by (uploader) into 8 buckets
row format delimited
fields terminated by "\t"
買粉絲llection items terminated by "&"
stored as orc;
數據導入:
1)load data inpath "path" into table youtube1;
2)由于無法將textfile格式的數據導入到orc格式的表格,所以數據需要從youtube1導入到youtube2和youtube3:
insert into table youtube2 select * from youtube1;
insert into table youtube3 select * from youtube1;
1)user_tmp的創建,文件格式textfile,24buckets
create table user_tmp(uploader string,買粉絲s int,friends int)
clustered by (uploader) into 24 buckets
row format delimited
fields terminated by "\t"
stored as textfile;
2)user的創建,文件格式orc,24buckets
create table user(uploader string,買粉絲s int,friends int)
clustered by (uploader) into 24 buckets
row format delimited
fields terminated by "\t"
stored as orc;
user表的數據導入也是同理
數據導入:
1)load data inpath "path" into table user_tmp;
2)由于無法將textfile格式的數據導入到orc格式的表格,所以數據需要從user_tmp導入到user:
insert into table user select * from user_tmp;
1)統計出觀看數最多的10個視頻
2)統計出視頻類別熱度的前10個類型
3)統計出視頻觀看數最高的50個視頻的所屬類別
4)統計出觀看數最多的前N個視頻所關聯的視頻的所屬類別排行