2017年12月13日 星期三

Pig 實務應用-大專院校學生人數分析及排序

ubuntu@HDClient:~$ wget --no-check-certificate
https://stats.moe.gov.tw/files/detail/103/103_student.txt


ubuntu@HDClient:~$ cat temp.txt | head
大專校院校別學生數
103 學年度 SY2014-2015
學校代碼        學校名稱        日間∕進修別     等級別  總計    男生計  女生計  一年級男生      一年級女生      二年級男生      二年級女生      三年級男生      三年級女生      四年級男生      四年級女生      五年級男生      五年級女生      六年級男生      六年級女生      七年級男生      七年級女生      延修生男生      延修生女生      縣市名稱        體系別
0001    國立政治大學    D 日    D 博士  973     583     390     117     76      79      62      94      58      98      57       75      53      61      43      59      41      -       -       30 臺北市       1 一般
0001    國立政治大學    D 日    M 碩士  "3,816" "1,750" "2,066" 626     707     573     683     344     404     207     272      -       -       -       -       -       -       -       -       30 臺北市       1 一般
:::


ubuntu@HDClient:~$ sed 's/\"//g' < temp.txt > student.txt 去除雙引號
ubuntu@HDClient:~$ cat student.txt | head
大專校院校別學生數
103 學年度 SY2014-2015
學校代碼        學校名稱        日間∕進修別     等級別  總計    男生計  女生計  一年級男生      一年級女生      二年級男生      二年級女生      三年級男生      三年級女生      四年級男生      四年級女生      五年級男生      五年級女生      六年級男生      六年級女生      七年級男生      七年級女生      延修生男生      延修生女生      縣市名稱        體系別
0001    國立政治大學    D 日    D 博士  973     583     390     117     76      79      62      94      58      98      57       75      53      61      43      59      41      -       -       30 臺北市       1 一般
0001    國立政治大學    D 日    M 碩士  3,816   1,750   2,066   626     707     573     683     344     404     207     272      -       -       -       -       -       -       -       -       30 臺北市       1 一般
0001    國立政治大學    D 日    B 學士  9,639   3,711   5,928   859     1,359   843     1,423   857     1,394   881     1,350    -       -       -       -       -       -       271     402     30 臺北市       1 一般
0001    國立政治大學    N 職    M 碩士  1,625   875     750     314     233     294     257     154     142     67      77       46      41      -       -       -       -       -       -       30 臺北市       1 一般
0002    國立清華大學    D 日    D 博士  1,786   1,403   383     248     58      219     54      213     55      220     56       189     50      152     62      141     46      21      2       18 新竹市       1 一般
:::


ubuntu@HDClient:~$ vi liststudent.pig
record = LOAD '$input' as (code:chararrey, name:chararray, type:chararray, class:chararray, total:int) ;
f1 = filter records by total is not null ;
g1 = group f1 by name ;
dump g1 ;

ubuntu@HDClient:~$ pig -param input=student.txt liststudent.pig
-param 指定Pig執行程序檔使用參數
input 指定檔案名稱=

output:
(世新大學,{(1015,世新大學,P 進,B 學士,60),(1015,世新大學,D 日,D 博士,73),(1015,世新大學,D 日,M 碩士,774),(1015,世新大學,N 職,M 碩士,997),(1015,世新大學,N 修,C 二技,120)})
(中原大學,{(1004,中原大學,D 日,X 4+X,19),(1004,中原大學,D 日,D 博士,366)})
(中華大學,{(1011,中華大學,D 日,M 碩士,664),(1011,中華大學,D 日,D 博士,132),(1011,中華大學,P 進,B 學士,221),(1011,中華大學,N 修,C 二技,176),(1011,中華大學,N 職,M 碩士,283)})
(亞洲大學,{(1048,亞洲大學,D 日,D 博士,164),(1048,亞洲大學,N 職,M 碩士,526),(1048,亞洲大學,D 日,M 碩士,625)})
:::
ubuntu@HDClient:~$ cat countstudent.pig
records = LOAD '$input' as (code:chararray, name:chararray, type:chararray, class:chararray, total:int) ;
f1 = filter records by total is not null ;
g1 = group f1 by name ;
r1 = foreach g1 generate group, SUM(f1.total) ;
dump r1 ;
ubuntu@HDClient:~$ pig -param input=student.txt countstudent.pig

output
:::
(國立高雄海洋科技大學,1291)
(國立高雄第一科技大學,1124)
(崇仁醫護管理專科學校,19)
(慈惠醫護管理專科學校,467)
(新生醫護管理專科學校,86)
(樹人醫護管理專科學校,451)
(耕莘健康管理專科學校,80)
(馬偕醫護管理專科學校,459)
(高美醫護管理專科學校,850)
(康寧醫護暨管理專科學校,416)
2017-12-14 06:59:09,963 [main] INFO  org.apache.pig.Main - Pig script completed in 8 seconds and 433 milliseconds (8433 ms)

++Sorting...
sorted = ORDER r1 by $1 DESC ;
dump sorted ;
ine.util.MapRedUtil - Total input paths to process : 1
(國立臺北商業大學,3024)
(國立屏東大學,2270)
(國立臺北護理健康大學,2208)
(世新大學,2024)
(大漢技術學院,2022)
(國立高雄餐旅大學,2012)
(黎明技術學院,1964)
(國立臺灣科技大學,1933
:::

沒有留言:

張貼留言

check_systemv1.1

 check_systemv1.1.bat 可用於電腦資產盤點 @echo off REM 後續命令使用的是:UTF-8編碼 chcp 65001 echo ***Thanks for your cooperation*** echo ***感謝你的合作*** timeout 1...