2017年12月13日 星期三

Pig 實務應用-大專院校名錄分析


Pig 所使用的指令稱為 Pig Latin Statements,執行可以簡單分成三個步驟

1. 使用 LOAD 讀取資料
2. 一連串操作資料的指令
3. 使用 DUMP 來看結果或用 STORE 把結果存起來。如果不執行 DUMP 或 STORE 是不會產生任何 MapReduce job 的

可再細分指令的類型
讀取 : LOAD
儲存 : STORE
資料處理 : FILTER, FOREACH, GROUP, COGROUP, inner JOIN, outer JOIN, UNION, SPLIT, …
彙總運算 : AVG, COUNT, MAX, MIN, SIZE, …
數學運算 : ABS, RANDOM, ROUND, …
字串處理 : INDEXOF, SUBSTRING, REGEX EXTRACT, …
Debug : DUMP, DESCRIBE, EXPLAIN, ILLUSTRATE
HDFS 或本機的檔案操作 : cat, ls, cp, mkdir, copyfromlocal, copyToLocal, ……


ubuntu@HDClient:~$ wget --no-check-certificate https://stats.moe.gov.tw/files/school/105/u1_new.txt
--2017-12-14 02:52:39--  https://stats.moe.gov.tw/files/school/105/u1_new.txt
Resolving stats.moe.gov.tw (stats.moe.gov.tw)... 140.111.34.86
Connecting to stats.moe.gov.tw (stats.moe.gov.tw)|140.111.34.86|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: 26662 (26K) [text/plain]
Saving to: ‘u1_new.txt’

u1_new.txt          100%[===================>]  26.04K  --.-KB/s    in 0.04s

2017-12-14 02:52:39 (626 KB/s) - ‘u1_new.txt’ saved [26662/26662]


ubuntu@HDClient:~$ sudo apt-get install enca
[sudo] password for ubuntu:
Reading package lists... Done
Building dependency tree
Reading state information... Done
The following additional packages will be installed:
  libenca0 librecode0
Suggested packages:
  cstocs
The following NEW packages will be installed:
  enca libenca0 librecode0
0 upgraded, 3 newly installed, 0 to remove and 0 not upgraded.
Need to get 623 kB of archives.
After this operation, 2,222 kB of additional disk space will be used.
Do you want to continue? [Y/n] Y
Get:1 http://archive.ubuntu.com/ubuntu xenial/universe amd64 libenca0 amd64 1.18-1 [53.8 kB]
Get:2 http://archive.ubuntu.com/ubuntu xenial/main amd64 librecode0 amd64 3.6-22 [523 kB]
Get:3 http://archive.ubuntu.com/ubuntu xenial/universe amd64 enca amd64 1.18-1 [46.2 kB]
Fetched 623 kB in 6s (98.5 kB/s)
Selecting previously unselected package libenca0:amd64.
(Reading database ... 13716 files and directories currently installed.)
Preparing to unpack .../libenca0_1.18-1_amd64.deb ...
Unpacking libenca0:amd64 (1.18-1) ...
Selecting previously unselected package librecode0:amd64.
Preparing to unpack .../librecode0_3.6-22_amd64.deb ...
Unpacking librecode0:amd64 (3.6-22) ...
Selecting previously unselected package enca.
Preparing to unpack .../archives/enca_1.18-1_amd64.deb ...
Unpacking enca (1.18-1) ...
Processing triggers for libc-bin (2.23-0ubuntu9) ...
Setting up libenca0:amd64 (1.18-1) ...
Setting up librecode0:amd64 (3.6-22) ...
Setting up enca (1.18-1) ...
Processing triggers for libc-bin (2.23-0ubuntu9) ...

ubuntu@HDClient:~$enca u1_new.txt
enca: Cannot determine (or understand) your language preferences.
Please use `-L language', or `-L none' if your language is not supported
(only a few multibyte encodings can be recognized then).
Run `enca --list languages' to get a list of supported languages.

ubuntu@HDClient:~$ enca -L bulgarian u1_new.txt
Universal character set 2 bytes; UCS-2; BMP  <編碼格式>
  Mixed line terminators
  Byte order reversed in pairs (1,2 -> 2,1)

ubuntu@HDClient:~$ iconv -f UCS-2 -t utf8 u1_new.txt -o school.txt
ubuntu@HDClient:~$ ls
archive           getjdk.sh     pig-0.17.0             pig_1513154203595.log
authorized_keys   hadoop-2.8.2  pig-0.17.0.tar.gz      school.txt
getjdk_google.sh  jre1.8.0_151  pig_1513149536926.log  u1_new.txt

ubuntu@HDClient:~$ enca -L bulgarian school.txt
Universal transformation format 8 bits; UTF-8  <編碼格式>
  Mixed line terminators

ubuntu@HDClient:~$ cat school.txt | head -n 10
105學年度大專校院名錄

代碼    學校名稱        縣市名稱        地址    電話    網址    體系別
0001    國立政治大學    [38]臺北市      [116]臺北市文山區指南路二段64號 (02)29393091    http://www.nccu.edu.tw  [1]一般
0002    國立清華大學    [18]新竹市      [300]新竹市東區光復路二段101號  (03)5715131     http://www.nthu.edu.tw  [1]一般
0003    國立臺灣大學    [33]臺北市      [106]臺北市大安區羅斯福路四段1號       (02)33663366     http://www.ntu.edu.tw   [1]一般
0004    國立臺灣師範大學        [33]臺北市      [106]臺北市大安區和平東路一段162號      (02)77341111    http://www.ntnu.edu.tw  [3]師範
0005    國立成功大學    [21]臺南市      [701]臺南市東區大學路1號        (06)2757575     http://www.ncku.edu.tw  [1]一般
0006    國立中興大學    [19]臺中市      [402]臺中市南區興大路145號      (04)22873181    http://www.nchu.edu.tw  [1]一般
0007    國立交通大學    [18]新竹市      [300]新竹市東區大學路1001號     (03)5712121     http://www.nctu.edu.tw  [1]一般

grunt> cd test
grunt> copyFromLocal school.txt school.txt
grunt> school = LOAD 'school.txt' AS (sno:int, name:chararray) ;
grunt> dump school;

(,)
(,)
(,學校名稱)
(1,國立政治大學)
(2,國立清華大學)
(3,國立臺灣大學)
(4,國立臺灣師範大學)
:::
(1196,法鼓文理學院)
(1197,台北海洋技術學院)
(221,國立臺南護理專科學校)
(222,國立臺東專科學校)
(1282,馬偕醫護管理專科學校)
(1283,仁德醫護管理專科學校)
(1284,樹人醫護管理專科學校)
(1285,慈惠醫護管理專科學校)
(1286,耕莘健康管理專科學校)
(1287,敏惠醫護管理專科學校)
(1288,高美醫護管理專科學校)
(1289,育英醫護管理專科學校)
(1290,崇仁醫護管理專科學校)
(1291,聖母醫護管理專科學校)
(1292,新生醫護管理專科學校)
(,)
(,) #雜質

grunt> school = LOAD 'school.txt' AS (sno:int, name:chararray, city:chararray) ;
grunt> sdiv = GROUP school BY city ;
grunt> describe sdiv ;
sdiv: {group: chararray,school: {(sno: int,name: chararray,city: chararray)}}
grunt> dump sdiv ;

([2]技職,{(,http://www.chihlee.edu.tw,[2]技職)})
(縣市名稱,{(,學校名稱,縣市名稱)})
([01]新北市,{(1179,德霖技術學院,[01]新北市),(1005,淡江大學,[01]新北市),(1166,亞東技術學院,[01]新北市),(1054,景文科技大學,[01]新北市),(1286,耕莘健康管理專科學校,[01]新北市),(1078,致理科技大學,[01]新北市),(1013,華梵大學,[01]新北市),(1044,聖約翰科技大學,[01]新北市),(1073,醒吾科技大學,[01]新北市),(1021,真理大學,[01]新北市),(17,國立臺北大學,[01]新北市),(1197,台北海洋技術學院,[01]新北市),(1196,法鼓文理學院,[01]新北市),(1195,馬偕醫學院,[01]新北市),(1002,輔仁大學,[01]新北市),(1041,明志科技大學,[01]新北市),(1056,東南科技大學,[01]新北市),(29,國立臺灣藝術大學,[01]新北市),(1076,華夏科技大學,[01]新北市),(1183,黎明技術學院,[01]新北市)})
([02]宜蘭縣,{(1050,佛光大學,[02]宜蘭縣),(31,國立宜蘭大學,[02]宜蘭縣),(1182,蘭陽技術學院,[02]宜蘭縣),(1291,聖母醫護管理專科學校,[02]宜蘭縣)})
([03]桃園市,{(1049,開南大學,[03]桃園市),(8,國立中央大學,[03]桃園市),(1010,元智大學,[03]桃園市),(1009,長庚大學,[03]桃園市),(1004,中原大學,[03]桃園市),(44,國立體育大學,[03]桃園市),(1030,龍華科技大學,[03]桃園市),(1168,南亞技術學院,[03]桃園市),(1036,健行科技大學,[03]桃園市),(1038,萬能科技大學,[03]桃園市),(1070,長庚科技大學,[03]桃園市),(1292,新生醫護管理專科學校,[03]桃園市)})
([04]新竹縣,{(1032,明新科技大學,[04]新竹縣),(1072,大華科技大學,[04]新竹縣)})
([05]苗栗縣,{(1283,仁德醫護管理專科學校,[05]苗栗縣),(1063,育達科技大學,[05]苗栗縣),(1189,亞太創意技術學院,[05]苗栗縣),(32,國立聯合大學,[05]苗栗縣)})
([06]臺中市,{(1034,弘光科技大學,[06]臺中市),(43,國立勤益科技大學,[06]臺中市),(1018,朝陽科技大學,[06]臺中市),(1048,亞洲大學,[06]臺中市),(1008,靜宜大學,[06]臺中市),(1069,修平科技大學,[06]臺中市)})
([07]彰化縣,{(1012,大葉大學,[07]彰化縣),(15,國立彰化師範大學,[07]彰化縣),(1068,中州科技大學,[07]彰化縣),(1058,明道大學,[07]彰化縣),(1040,建國科技大學,[07]彰化縣)})
([08]南投縣,{(21,國立暨南國際大學,[08]南投縣),(1060,南開科技大學,[08]南投縣)})
([09]雲林縣,{(33,國立虎尾科技大學,[09]雲林縣),(23,國立雲林科技大學,[09]雲林縣),(1066,環球科技大學,[09]雲林縣)})
([10]嘉義縣,{(1065,吳鳳科技大學,[10]嘉義縣),(13,國立中正大學,[10]嘉義縣),(1176,稻江科技暨管理學院,[10]嘉義縣),(1020,南華大學,[10]嘉義縣)})
([11]臺南市,{(1051,台南應用科技大學,[11]臺南市),(1055,中華醫事科技大學,[11]臺南市),(35,國立臺南藝術大學,[11]臺南市),(1067,台灣首府大學,[11]臺南市),(1074,南榮科技大學,[11]臺南市),(1033,長榮大學,[11]臺南市),(1052,遠東科技大學,[11]臺南市),(1025,嘉南藥理大學,[11]臺南市),(1024,崑山科技大學,[11]臺南市),(1023,南臺科技大學,[11]臺南市),(1287,敏惠醫護管理專科學校,[11]臺南市)})
([12]高雄市,{(26,國立高雄第一科技大學,[12]高雄市),(1037,正修科技大學,[12]高雄市),(1159,和春技術學院,[12]高雄市),(1184,東方設計學院,[12]高雄市),(1284,樹人醫護管理專科學校,[12]高雄市),(1031,輔英科技大學,[12]高雄市),(1026,樹德科技大學,[12]高雄市),(1288,高美醫護管理專科學校,[12]高雄市),(1042,高苑科技大學,[12]高雄市),(1014,義守大學,[12]高雄市)})
([13]屏東縣,{(24,國立屏東科技大學,[13]屏東縣),(1064,美和科技大學,[13]屏東縣),(1043,大仁科技大學,[13]屏東縣),(52,國立屏東大學,[13]屏東縣),(1285,慈惠醫護管理專科學校,[13]屏東縣)})
([14]臺東縣,{(30,國立臺東大學,[14]臺東縣),(222,國立臺東專科學校,[14]臺東縣)})
([15]花蓮縣,{(20,國立東華大學,[15]花蓮縣),(1027,慈濟大學,[15]花蓮縣),(1077,慈濟科技大學,[15]花蓮縣),(1148,大漢技術學院,[15]花蓮縣),(1192,臺灣觀光學院,[15]花蓮縣)})
([16]澎湖縣,{(42,國立澎湖科技大學,[16]澎湖縣)})
([17]基隆市,{(12,國立臺灣海洋大學,[17]基隆市),(1185,經國管理暨健康學院,[17]基隆市),(1187,崇右技術學院,[17]基隆市)})
([18]新竹市,{(2,國立清華大學,[18]新竹市),(1053,元培醫事科技大學,[18]新竹市),(1039,玄奘大學,[18]新竹市),(1011,中華大學,[18]新竹市),(7,國立交通大學,[18]新竹市)})
([19]臺中市,{(1062,僑光科技大學,[19]臺中市),(1029,中山醫學大學,[19]臺中市),(1047,中臺科技大學,[19]臺中市),(1007,逢甲大學,[19]臺中市),(6,國立中興大學,[19]臺中市),(1001,東海大學,[19]臺中市),(39,國立臺中教育大學,[19]臺中市),(1045,嶺東科技大學,[19]臺中市),(50,國立臺中科技大學,[19]臺中市),(49,國立臺灣體育運動大學,[19]臺中市),(1035,中國醫藥大學,[19]臺中市)})
([20]嘉義市,{(1290,崇仁醫護管理專科學校,[20]嘉義市),(18,國立嘉義大學,[20]嘉義市),(1188,大同技術學院,[20]嘉義市)})
([21]臺南市,{(221,國立臺南護理專科學校,[21]臺南市),(5,國立成功大學,[21]臺南市),(36,國立臺南大學,[21]臺南市),(1125,中信金融管理學院,[21]臺南市)})
([32]臺北市,{(1028,臺北醫學大學,[32]臺北市)})
([33]臺北市,{(37,國立臺北教育大學,[33]臺北市),(22,國立臺灣科技大學,[33]臺北市),(4,國立臺灣師範大學,[33]臺北市),(25,國立臺北科技大學,[33]臺北市),(3,國立臺灣大學,[33]臺北市)})
([34]臺北市,{(1022,大同大學,[34]臺北市),(1017,實踐大學,[34]臺北市)})
([35]臺北市,{(3002,臺北市立大學,[35]臺北市),(51,國立臺北商業大學,[35]臺北市)})
([38]臺北市,{(1015,世新大學,[38]臺北市),(1046,中國科技大學,[38]臺北市),(1,國立政治大學,[38]臺北市)})
([39]臺北市,{(1061,中華科技大學,[39]臺北市)})
([40]臺北市,{(1079,康寧大學,[40]臺北市),(144,國立臺灣戲曲學院,[40]臺北市),(1057,德明財經科技大學,[40]臺北市)})
([41]臺北市,{(1003,東吳大學,[41]臺北市),(1016,銘傳大學,[41]臺北市),(1006,中國文化大學,[41]臺北市)})
([42]臺北市,{(28,國立臺北藝術大學,[42]臺北市),(1071,臺北城市科技大學,[42]臺北市),(46,國立臺北護理健康大學,[42]臺北市),(16,國立陽明大學,[42]臺北市),(1282,馬偕醫護管理專科學校,[42]臺北市)})
([52]高雄市,{(9,國立中山大學,[52]高雄市)})
([54]高雄市,{(19,國立高雄大學,[54]高雄市),(34,國立高雄海洋科技大學,[54]高雄市)})
([55]高雄市,{(27,國立高雄應用科技大學,[55]高雄市),(1289,育英醫護管理專科學校,[55]高雄市),(1019,高雄醫學大學,[55]高雄市),(1075,文藻外語大學,[55]高雄市)})
([58]高雄市,{(14,國立高雄師範大學,[58]高雄市)})
([61]高雄市,{(47,國立高雄餐旅大學,[61]高雄市)})
([71]金門縣,{(48,國立金門大學,[71]金門縣)})
([300]新竹市東區南大路521號,{(,[18]新竹市,[300]新竹市東區南大路521號)})
(,{(,,),(,,),(38,"國立清華大學南大校區,),(,,),(,,)})

<一個市有多個代碼,是分區嗎?>
grunt> counts = foreach sdiv generate group,COUNT(school) ;
grunt> dump counts ;
([2]技職,0)
(縣市名稱,0)
([01]新北市,20)
([02]宜蘭縣,4)
([03]桃園市,12)
([04]新竹縣,2)
([05]苗栗縣,4)
([06]臺中市,6)
([07]彰化縣,5)
([08]南投縣,2)
([09]雲林縣,3)
([10]嘉義縣,4)
([11]臺南市,11)
([12]高雄市,10)
([13]屏東縣,5)
([14]臺東縣,2)
([15]花蓮縣,5)
([16]澎湖縣,1)
([17]基隆市,3)
([18]新竹市,5)
([19]臺中市,11)
([20]嘉義市,3)
([21]臺南市,4)
([32]臺北市,1)
([33]臺北市,5)
([34]臺北市,2)
([35]臺北市,2)
([38]臺北市,3)
([39]臺北市,1)
([40]臺北市,3)
([41]臺北市,3)
([42]臺北市,5)
([52]高雄市,1)
([54]高雄市,2)
([55]高雄市,4)
([58]高雄市,1)
([61]高雄市,1)
([71]金門縣,1)
([300]新竹市東區南大路521號,0)
(,1)

grunt> store counts into 'sr' ;
:::

HadoopVersion   PigVersion      UserId  StartedAt       FinishedAt      Features
2.8.2   0.17.0  ubuntu  2017-12-14 03:22:35     2017-12-14 03:22:41     GROUP_BY

Success!
:::
grunt> ls
:::
hdfs://nn:8020/user/ubuntu/QuasiMonteCarlo_1513151543701_374121214      <dir>
hdfs://nn:8020/user/ubuntu/QuasiMonteCarlo_1513151766235_1024435763     <dir>
hdfs://nn:8020/user/ubuntu/QuasiMonteCarlo_1513152287029_119532194      <dir>
hdfs://nn:8020/user/ubuntu/school.txt<r 3>      20609
hdfs://nn:8020/user/ubuntu/sr   <dir>
grunt> cd sr
hdfs://nn:8020/user/ubuntu/sr/_SUCCESS<r 3>     0
hdfs://nn:8020/user/ubuntu/sr/part-r-00000<r 3> 649

grunt> ls sr
hdfs://nn:8020/user/ubuntu/sr/_SUCCESS<r 3>     0
hdfs://nn:8020/user/ubuntu/sr/part-r-00000<r 3> 649
grunt> cat sr/part-r-00000
[2]技職 0
縣市名稱        0
[01]新北市      20
[02]宜蘭縣      4
[03]桃園市      12
[04]新竹縣      2
[05]苗栗縣      4
:::





沒有留言:

張貼留言

check_systemv1.1

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