今天要與各位分享如何將下載的資料集,在Linux先做簡單的ETL處理(註1),而後再進一步放進Hadoop做數據分析:
註1:ETL,是英文Extract-Transform-Load的縮寫,用來描述將資料從來源端經過萃取(extract)、轉置(transform)、載入(load)至目的端的過程。 ETL一詞較常用在資料倉儲,但其物件並不限於資料倉儲。(以上註1資料來源:維基百科)
步驟一、首先將資料從「開放平台」下載至作業系統上
以美國電影資料集 movies_data.csv 為例,如下:
$ wget https://raw.githubusercontent.com/rohitsden/pig-tutorial/master/movies_data.csv
其他電影資料集二:https://gist.githubusercontent.com/tiangechen/b68782efa49a16edaf07dc2cdaa855ea/raw/0c794a9717f18b094eabab2cd6a6b9a226903577/movies.csv
欄位說明:https://gist.github.com/tiangechen/b68782efa49a16edaf07dc2cdaa855ea
其他電影資料集三: https://raw.githubusercontent.com/fragmadata/MovieDataset/master/movies.csv
政府開放平台資料集:
台灣全國電影院資料集網頁:https://data.gov.tw/dataset/22213
電影片分級及相關資訊:https://data.gov.tw/dataset/59820
步驟二、檢視資料集(先觀察資料及欄位,確認是否有異常值或人為備註或說明)
$ head -n 6 movies_data.csv $ tail -n 1 movies_data.csv
步驟三、簡易過濾不要的資料,萃取必需的原始資料(Extract)並轉置成檔案(Transform)
$ cat movies_data.csv | grep 'Top Gun' > movies01.csv $ cat movies_data.csv | grep '2000' > movies2000.csv
註2:關於Linux的grep命令,可以參考「鳥哥的LINUX私房菜」書籍或至「鳥哥私房菜」官網,查詢參數及正規化相關指令的應用。
步驟四、將過濾後的數據資料放到Hadoop
grunt> copyfromlocal movies2000.csv . grunt> ls
註3:步驟1~4是屬於ETL,至於儲存到Hadoop的其他方法,會於課堂上分享。
步驟五、再從Hadoop將資料取出,使用分析工具定義數據資料型態
grunt> movies = LOAD 'movies2000.csv' USING PigStorage(',') AS (id:int,name:chararray,year:int,rating:float,duration:int);
步驟六、顯示要看的資料筆數「五筆」
grunt> limit5 = LIMIT movies 5; grunt> dump limit5;
實務操作練習一
實務操作練習二
大數據 , 大數據分析
沒有留言:
張貼留言