當前位置:成語大全網 - 書法字典 - 蜂巢實戰Youtube數據集

蜂巢實戰Youtube數據集

實際數據來自YouTube視頻統計和社交網絡的數據集,該數據集由西蒙弗雷澤大學計算機學院於2008年爬取。

數據集地址

使用“\t”作為數據之間的分隔符。

具體數據如下:

數據量1G,文章數500萬+

使用環境是

hive-1.1.0-CD H5 . 4 . 5

hadoop-2.6.0-cdh5.4.5

演示形式是使用hive shell。

讓我們壹起來看看數據

主要問題在於類別和相關id的處理。因為Hive支持數組格式,所以我們想到了使用數組來存儲category和relatedIDs,但是我們發現category的分隔符是“&”。realatedIDs的分隔符是“\t”。我們可以在創建表時指定數組的分隔符,但只能指定壹個分隔符,因此我們需要在將數據導入Hive表之前對其進行轉換和清理。

而且數據中肯定存在壹些不完整的數據和壹些奇怪的格式,因此有必要對數據進行清洗。我在這裏使用的數據清理方法是火花,或者妳可以使用自定義UDF函數來清理它。

數據清洗的註意事項

1)我們可以看到每壹行數據都以“\t”為分隔符,每壹行有十列數據,最後壹列的correlation ID可以為空,所以我們拆分數據後數組的大小大於8。

2)有“unik xdA8 eyq krqe 1035 news &;amp政治107”,所以需要關註news &;中間的政治&;amp

處理後的數據如下:

以下實戰基於清洗後的數據。

1)YouTube 1的創建,文件格式是textfile。

創建表格YouTube 1(video id字符串、上傳者字符串、年齡整數、類別數組& lt字符串& gt,length int,views int,rate float,ratings int,comments int,relatedId array & lt字符串& gt)

行格式分隔

以“\t”結尾的字段

以“& amp”終止的集合項目

存儲為文本文件;

2)創建YouTube 2,文件格式為orc。

創建表格YouTube 2(video id字符串,uploader字符串,age int,類別數組& lt字符串& gt,length int,views int,rate float,ratings int,comments int,relatedId array & lt字符串& gt)

行格式分隔

以“\t”結尾的字段

以“& amp”終止的集合項目

存儲為orc

3)創建YouTube 3,文件格式為orc,並對桶進行分區。

創建表格YouTube 3(video id字符串,uploader字符串,age int,類別數組& lt字符串& gt,length int,views int,rate float,ratings int,comments int,relatedId array & lt字符串& gt)

由(上傳者)聚集成8個桶

行格式分隔

以“\t”結尾的字段

以“& amp”終止的集合項目

存儲為orc

數據導入:

1)將路徑“path”中的數據加載到表youtube1中;

2)由於文本文件格式的數據無法導入到orc格式表中,因此需要將數據從youtube1導入到youtube2和youtube3:

插入表格YouTube 2 select * from YouTube 1;

插入到表格YouTube 3 select * from YouTube 1;

1)創建user _ tmp,文件格式為文本文件,24個存儲桶。

創建表格user_tmp(上傳者字符串,視頻整數,朋友整數)

由(上傳者)聚集成24個桶

行格式分隔

以“\t”結尾的字段

存儲為文本文件;

2)創建2)用戶,文件格式orc,24桶。

創建表格用戶(上傳者字符串、視頻int、朋友int)

由(上傳者)聚集成24個桶

行格式分隔

以“\t”結尾的字段

存儲為orc

用戶表的數據導入也是如此。

數據導入:

1)將路徑“path”中的數據加載到表user_tmp中;

2)文本文件格式的數據無法導入到orc格式表中,因此需要將數據從user_tmp導入到user:

insert into table user select * from user _ tmp;

1)統計觀看次數最多的10個視頻。

2)統計視頻類別人氣排名前10的類型。

3)統計前50名視頻的類別。

4)統計與觀看次數最多的前N個視頻相關聯的視頻的類別排名。

5)篩選出每個類別中人氣最高的前10個視頻。

6)篩選出每個類別中得分最高的前10個視頻。

7)找出上傳視頻最多的10用戶的所有視頻。

8)篩選出每個類別的瀏覽量:Top10。

select * from YouTube 3 order by views desc限制10;

結果如下:

select tagId,count(a . video id)as sum from(select video id,tagId from youtube3側視圖explode(category)catory as tagId)a group by a . tagId order by sum desc限制10;

結果:

select tagId,count(a . video id)as sum from(select video id,tagId from(select * from YouTube 3 order by views desc限制20)e lateral view explode(category)catory as tagId)a group by a . tagId order by sum desc;

結果:

想法:

結果:

想法:

結果如下:

select * from youtube_category其中categoryId =“Music“order by ratings desc限制10;

結果如下:

想法:

結果如下: