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
:::
沒有留言:
張貼留言