天天看點

大資料應用期末總評

本次作業的要求來自:https://edu.cnblogs.com/campus/gzcc/GZCC-16SE2/homework/3339

前言

本次作業是在《爬蟲大作業》的基礎上進行的,在《爬蟲大作業》中,我主要對豆瓣網各類型書籍進行資料爬取,最終得到了2641條資料存在一個名為lagoupy.xls中。本次作業的任務主要有以下三點:

1.對CSV檔案進行預處理生成無标題文本檔案,将爬蟲大作業産生的csv檔案上傳到HDFS

2.把hdfs中的文本檔案最終導入到資料倉庫Hive中,在Hive中檢視并分析資料

3.用Hive對爬蟲大作業産生的進行資料分析(10條以上的查詢分析)

資料預處理

由于我們爬取下來的資料并不是全部都是我們所要的,或者是有一些資料需要進行加工才可以用到,這時候資料的預處理就必不可少了,原始的資料如下圖所示。

大資料應用期末總評

1.删除重複值

如果資料中存在重複記錄, 而且重複數量較多時, 勢必會對結果造成影響, 是以我們應當首先處理重複值。打開lagoupy.xls檔案,選中崗位id這一列資料,選擇資料——>删除重複值,對重複值進行删除,删除重複值後,我們可以發現,資料從原來的5000條變成4676條。

大資料應用期末總評

2.過濾無效資料

由于某些資料對我們的資料分析并無用處,是以對于這一部分資料我們可以不要,在這裡釋出時間是無效資料,是以我們可以直接删除這一列。

3.添加序号

由于我們的資料是要存進資料庫的,是以在這裡我添加了序号這一列,給我們的資料進行編号,以便于後期我們對資料的分析。此外,為了友善後續的工作,我在這裡将檔案另存為csv格式,需要注意的是:在儲存類型中我們選擇CSV UTF-8(逗号分隔)。

經過上述幾個步驟後,我們最終可以得到一個經過資料預處理的csv檔案,如下圖所示。

大資料應用期末總評

大資料分析

首先,我們需要在本地中建立一個/usr/local/bigdatacase/dataset檔案夾,具體的步驟為:

① cd /usr/local

② sudo mkdir biggdatacase

③ cd biggdatacase/

④ sudo mkdir dataset

⑤ cd dataset/

如下圖所示:

大資料應用期末總評

其次,我們把lagoupy.csv檔案放到下載下傳這個檔案夾中,并使用指令把lagoupy.csv檔案拷貝到我們剛剛所建立的檔案夾中,具體步驟如下:

① sudo cp /home/hadoop/下載下傳/test.csv /usr/local/biggdatacase/dataset/ #把test.csv檔案拷到剛剛所建立的檔案夾中

② head -5 test.csv #檢視這個檔案的前五行

大資料應用期末總評
大資料應用期末總評

對CSV檔案進行預處理生成無标題文本檔案,步驟如下:

① sudo sed -i '1d' test.csv #删除第一行記錄

② head -5 test.csv #檢視前五行記錄

大資料應用期末總評

接着,啟動hadoop,步驟如下:

① start-all.sh #啟動hadoop

② jps #檢視hadoop是否啟動成功

大資料應用期末總評

最後,我們把本地的檔案上傳至HDFS中,步驟如下:

① hdfs dfs -mkdir -p /biggdatacase/dataset #在hdfs上建立/bigdatacase/dataset

② hdfs dfs -ls /

③ hdfs dfs -put ./test.csv /biggdatacase/dataset #把本地檔案lagoupy.csv上傳至hdfs中

④ hdfs dfs  -ls /biggdatacase/dataset #檢視

⑤ hdfs dfs -cat /biggdatacase/dataset/test.csv | head -5 #檢視hdfs中lagoupy.csv的前五行

大資料應用期末總評
大資料應用期末總評

2.把hdfs中的文本檔案最終導入到資料倉庫Hive中

 首先,啟動hive,步驟如下:

① service mysql start #啟動mysql資料庫

② cd /usr/local/hive

③ ./bin/hive #啟動hive

大資料應用期末總評

其次,把hdfs中的文本檔案最終導入到資料倉庫Hive中,并在Hive中檢視并分析資料,具體步驟如下:

① create database dbpy;  -- 建立資料庫dbpy

② use dbpy;

③ create external table lagou_py(id int,positionID string,city string,companyFullName string,companyLabelList string,district string,education string,firstType string,positionName string,salary string,workYear string) row format delimited fields terminated by ',' stored as textfile location '/bigdatacase/dataset/';  -- 建立表lagou_py并把hdfs中/bigdatacase/dataset/目錄下的資料加載到表中

④ select * from lagou_py limit 10; -- 檢視lagou_py中前10行的資料

大資料應用期末總評

查詢資料量:

大資料應用期末總評

查詢不重複資料量:

大資料應用期末總評

1.銷量最多的作者經過查詢發現是魯迅:

select MAX(pID) from labb;

大資料應用期末總評

2.查詢評論量大于5w的書籍:

select name from labb where pinglun>49999;

大資料應用期末總評

3.查詢銷量大于1w5的書籍有哪些:

select name,pinglun from labb wherexiaoliang>15000;

大資料應用期末總評

4.查詢了小說有哪些書籍:

select name,pID from labb where pID=‘小說’;

大資料應用期末總評

5.查詢了童話有哪些書籍;

select name,pID from labb where pID='童話';

大資料應用期末總評

6.查詢雜文的數量:

select count(*) from labb where pID=‘雜文’;

大資料應用期末總評

7.根據銷量排序分類為童話:

select * from labb where pID = '童話' order by xiaoliang desc;

大資料應用期末總評

8.查詢銷量大于5w,并且前20名

select name,xiaoliang from labb where xiaoliang>50000 limit 20;

大資料應用期末總評

9.查詢銷量大于1w5的書籍有哪些:

大資料應用期末總評

10.查詢了小說有哪些書籍:

大資料應用期末總評