1 | | cp -rf Example/itri/ /tmp |
2 | | bin/hadoop dfs -put /tmp/itri/income/ income |
3 | | bin/hadoop jar ItriMenu.jar Itri1LoadFile |
4 | | |
5 | | {{{ |
6 | | #text |
7 | | create new table: itri |
8 | | Put data :"GunLong" to Table: itri's Detail:Name |
9 | | Put data :"01" to Table: itri's Detail:Locate |
10 | | Put data :"20" to Table: itri's Products:P1 |
11 | | Put data :"40" to Table: itri's Products:P2 |
12 | | Put data :"30" to Table: itri's Products:P3 |
13 | | Put data :"50" to Table: itri's Products:P4 |
14 | | |
15 | | Put data :"Esing" to Table: itri's Detail:Name |
16 | | Put data :"02" to Table: itri's Detail:Locate |
17 | | Put data :"50" to Table: itri's Products:P1 |
18 | | |
19 | | Put data :"SunDon" to Table: itri's Detail:Name |
20 | | Put data :"03" to Table: itri's Detail:Locate |
21 | | Put data :"40" to Table: itri's Products:P1 |
22 | | Put data :"30" to Table: itri's Products:P2 |
23 | | |
24 | | Put data :"StarBucks" to Table: itri's Detail:Name |
25 | | Put data :"04" to Table: itri's Detail:Locate |
26 | | Put data :"50" to Table: itri's Products:P1 |
27 | | Put data :"50" to Table: itri's Products:P2 |
28 | | Put data :"20" to Table: itri's Products:P3 |
29 | | }}} |
30 | | |
31 | | bin/hadoop jar ItriMenu.jar Itri2Count |
32 | | {{{ |
33 | | #!text |
34 | | 11/04/25 12:15:04 INFO input.FileInputFormat: Total input paths to process : 2 |
35 | | 11/04/25 12:15:04 INFO mapred.JobClient: Running job: job_201104250959_0004 |
36 | | 11/04/25 12:15:05 INFO mapred.JobClient: map 0% reduce 0% |
37 | | 11/04/25 12:15:12 INFO mapred.JobClient: map 100% reduce 0% |
38 | | 11/04/25 12:15:21 INFO mapred.JobClient: map 100% reduce 100% |
39 | | }}} |
40 | | |
41 | | bin/hadoop jar ItriMenu.jar Itri3CalculateM |
42 | | {{{ |
43 | | #!text |
44 | | 11/04/25 12:16:18 INFO mapred.JobClient: map 0% reduce 0% |
45 | | 11/04/25 12:16:27 INFO mapred.JobClient: map 100% reduce 0% |
46 | | 11/04/25 12:16:36 INFO mapred.JobClient: map 100% reduce 100% |
47 | | }}} |
48 | | |
49 | | bin/hadoop jar ItriMenu.jar Itri4SortTurnover |
50 | | |
51 | | bin/hadoop jar ItriMenu.jar Itri5ShowReport 120 |
| 1 | {{{ |
| 2 | #!html |
| 3 | <div style="text-align: center; color:#151B8D"><big style="font-weight: bold;"><big><big> |
| 4 | 案例實務 |
| 5 | </big></big></big></div> <div style="text-align: center; color:#7E2217"><big style="font-weight: bold;"><big> |
| 6 | ITRI 餐廳 |
| 7 | </big></big></div> |
| 8 | }}} |
| 9 | |
| 10 | [[PageOutline]] |
| 11 | |
| 12 | [wiki:waue/2011/0426 >> 回課程大綱] |
| 13 | |
| 14 | = 執行環境 = |
| 15 | |
| 16 | * 檢查是否有加裝 transactional 函式庫 |
| 17 | * 加裝 tableindexed 函式庫 |
| 18 | {{{ |
| 19 | cp /opt/hbase/contrib/transactional/hbase-*-transactional.jar /opt/hbase/lib/ |
| 20 | }}} |
| 21 | * 重新啟動 hbase |
| 22 | {{{ |
| 23 | /opt/hbase/bin/stop-hbase.sh |
| 24 | /opt/hbase/bin/start-hbase.sh |
| 25 | }}} |
| 26 | |
| 27 | = 事先準備 = |
| 28 | |
| 29 | * 請先準備以下檔案 |
| 30 | * /tmp/itri/store.txt |
| 31 | {{{ |
| 32 | #!text |
| 33 | T01;GunLong; 01;20;40;30;50 |
| 34 | T02;Esing; 02;50 |
| 35 | T03;SunDon; 03;40;30 |
| 36 | T04;StarBucks; 04;50;50;20 |
| 37 | }}} |
| 38 | |
| 39 | * 請準備以下檔案,並將 income 資料夾上傳到hdfs |
| 40 | * /tmp/itri/income/0202.txt |
| 41 | {{{ |
| 42 | #!text |
| 43 | waue:T01:P1:xxxxx |
| 44 | jazz:T01:P2:xxxxx |
| 45 | lia:T01:P3:xxxxx |
| 46 | hung:T02:P1:xxxxx |
| 47 | lia:T04:P1:xxxxx |
| 48 | lia:T04:P1:xxxxx |
| 49 | hung:T04:P3:xxxxx |
| 50 | hung:T04:P2:xxxxx |
| 51 | }}} |
| 52 | * /tmp/itri/income/0203.txt |
| 53 | {{{ |
| 54 | #!text |
| 55 | xxx:T01:P4:xxxxx |
| 56 | ooo:T02:P1:xxxxx |
| 57 | oo:T03:P1:xxxxx |
| 58 | xxx:T03:P1:xxxxx |
| 59 | aaa:T03:P1:xxxxx |
| 60 | }}} |
| 61 | * 上傳到 HDFS |
| 62 | {{{ |
| 63 | $ /opt/hadoop/bin/hadoop fs -put /tmp/itri/income/ income |
| 64 | }}} |
| 65 | |
| 66 | == 假設: == |
| 67 | |
| 68 | 目前有四間商店進駐 ITRI ,分別為 |
| 69 | |
| 70 | 位在第1區的GunLong,品項4項單價為<20,40,30,50> |
| 71 | |
| 72 | 第2區的ESing,品項1項單價為<50> |
| 73 | |
| 74 | 第3區的SunDon,品項2項單價為<40,30> |
| 75 | |
| 76 | 第4區的StarBucks,品項3項單價為<50,50,20> |
| 77 | |
| 78 | |
| 79 | == 1. 建立商店資料 == |
| 80 | |
| 81 | [wiki:waue/2011/0425_Itri1LoadFile Itri1LoadFile.java ], |
| 82 | |
| 83 | || || Detail || Detail || Products || Products || Products || Products || Turnover || |
| 84 | || || Name || Locate || P1 || P2 || P3 || P4|| || |
| 85 | || T01 || Gun-Long || 01 || 20 || 40 || 30 || 50 || || |
| 86 | || T02 || ESing || 02 || 50 || || || || || |
| 87 | || T03 || Sun-Don || 03 || 40 || 30 || || || || |
| 88 | || T04 || Star Bucks || 04 || 50 || 50 || || || || |
| 89 | |
| 90 | {{{ |
| 91 | $ /opt/hadoop/bin/hadoop jar ItriMenu.jar Itri1LoadFile |
| 92 | }}} |
| 93 | |
| 94 | {{{ |
| 95 | create new table: Itri |
| 96 | Put data :"GunLong" to Table: Itri's Detail:Name |
| 97 | Put data :"01" to Table: Itri's Detail:Locate |
| 98 | Put data :"20" to Table: Itri's Products:P1 |
| 99 | Put data :"40" to Table: Itri's Products:P2 |
| 100 | Put data :"30" to Table: Itri's Products:P3 |
| 101 | Put data :"50" to Table: Itri's Products:P4 |
| 102 | |
| 103 | Put data :"Esing" to Table: Itri's Detail:Name |
| 104 | Put data :"02" to Table: Itri's Detail:Locate |
| 105 | Put data :"50" to Table: Itri's Products:P1 |
| 106 | |
| 107 | Put data :"SunDon" to Table: Itri's Detail:Name |
| 108 | Put data :"03" to Table: Itri's Detail:Locate |
| 109 | Put data :"40" to Table: Itri's Products:P1 |
| 110 | Put data :"30" to Table: Itri's Products:P2 |
| 111 | |
| 112 | Put data :"StarBucks" to Table: Itri's Detail:Name |
| 113 | Put data :"04" to Table: Itri's Detail:Locate |
| 114 | Put data :"50" to Table: Itri's Products:P1 |
| 115 | Put data :"50" to Table: Itri's Products:P2 |
| 116 | Put data :"20" to Table: Itri's Products:P3 |
| 117 | |
| 118 | }}} |
| 119 | |
| 120 | == 2 計算單月每個品項的購買次數 == |
| 121 | |
| 122 | [wiki:waue/2011/0425_Itri2Count Itri2Count.java] , |
| 123 | |
| 124 | {{{ |
| 125 | $ /opt/hadoop/bin/hadoop jar ItriMenu.jar Itri2Count |
| 126 | }}} |
| 127 | |
| 128 | || || Detail ||Detail || Products || Products||Products || Products|| Turnover || Turnover || Turnover || Turnover || || |
| 129 | || || Name || Locate || P1 || P2 || P3 || P4|| P1 || P2 || P3 || P4 || || |
| 130 | || T01 || Gun-Long || 01 || 20 || 40 || 30 || 50 || 1 || 1 || 1 || 1 || || |
| 131 | || T02 || ESing || 02 || 50 || || || ||2 || || || || || |
| 132 | || T03 || Sun-Don || 03 || 40 || 30 || || ||3 || || || || || |
| 133 | || T04 || Star Bucks || 04 || 50 || 50 || || ||2 || 1 || 1 || || || |
| 134 | |
| 135 | {{{ |
| 136 | > scan 'Itri' |
| 137 | ROW COLUMN+CELL |
| 138 | T01 column=Detail:Locate, timestamp=1265184360616, value=01 |
| 139 | T01 column=Detail:Name, timestamp=1265184360548, value=GunLong |
| 140 | T01 column=Products:P1, timestamp=1265184360694, value=20 |
| 141 | T01 column=Products:P2, timestamp=1265184360758, value=40 |
| 142 | T01 column=Products:P3, timestamp=1265184360815, value=30 |
| 143 | T01 column=Products:P4, timestamp=1265184360866, value=50 |
| 144 | T01 column=Turnover:P1, timestamp=1265187021528, value=1 |
| 145 | T01 column=Turnover:P2, timestamp=1265187021528, value=1 |
| 146 | T01 column=Turnover:P3, timestamp=1265187021528, value=1 |
| 147 | T01 column=Turnover:P4, timestamp=1265187021528, value=1 |
| 148 | T02 column=Detail:Locate, timestamp=1265184360951, value=02 |
| 149 | T02 column=Detail:Name, timestamp=1265184360910, value=Esing |
| 150 | T02 column=Products:P1, timestamp=1265184361051, value=50 |
| 151 | T02 column=Turnover:P1, timestamp=1265187021528, value=2 |
| 152 | T03 column=Detail:Locate, timestamp=1265184361124, value=03 |
| 153 | T03 column=Detail:Name, timestamp=1265184361098, value=SunDon |
| 154 | T03 column=Products:P1, timestamp=1265184361189, value=40 |
| 155 | T03 column=Products:P2, timestamp=1265184361259, value=30 |
| 156 | T03 column=Turnover:P1, timestamp=1265187021529, value=3 |
| 157 | T04 column=Detail:Locate, timestamp=1265184361311, value=04 |
| 158 | T04 column=Detail:Name, timestamp=1265184361287, value=StarBucks |
| 159 | T04 column=Products:P1, timestamp=1265184361343, value=50 |
| 160 | T04 column=Products:P2, timestamp=1265184361386, value=50 |
| 161 | T04 column=Products:P3, timestamp=1265184361422, value=20 |
| 162 | T04 column=Turnover:P1, timestamp=1265187021529, value=2 |
| 163 | T04 column=Turnover:P2, timestamp=1265187021529, value=1 |
| 164 | T04 column=Turnover:P3, timestamp=1265187021529, value=1 |
| 165 | 4 row(s) in 0.0310 seconds |
| 166 | |
| 167 | }}} |
| 168 | |
| 169 | |
| 170 | |
| 171 | |
| 172 | == 3. 計算當天營業額 == |
| 173 | |
| 174 | [wiki:waue/2011/0425_Itri3CalculateMR Itri3CalculateMR.java], |
| 175 | |
| 176 | {{{ |
| 177 | $ /opt/hadoop/bin/hadoop jar ItriMenu.jar Itri3CalculateMR |
| 178 | }}} |
| 179 | |
| 180 | || || Detail || Detail || Products || Products|| Products || Products || Turnover || Turnover || Turnover || Turnover || Turnover || |
| 181 | || || Name || Locate || P1 || P2 || P3 || P4|| P1 || P2 || P3 || P4 || Sum || |
| 182 | || T01 || Gun-Long || 01 || 20 || 40 || 30 || 50 || 1 || 1 || 1 || 1 || 140 || |
| 183 | || T02 || ESing || 02 || 50 || || || ||2 || || || || 100 || |
| 184 | || T03 || Sun-Don || 03 || 40 || 30 || || ||3 || || || || 120 || |
| 185 | || T04 || Star Bucks || 04 || 50 || 50 || || ||2 || 1 || 1 || || 170 || |
| 186 | |
| 187 | |
| 188 | {{{ |
| 189 | > scan ‘Itri’ |
| 190 | ROW COLUMN+CELL |
| 191 | T01 column=Detail:Locate, timestamp=1265184360616, value=01 |
| 192 | T01 column=Detail:Name, timestamp=1265184360548, value=GunLong |
| 193 | T01 column=Products:P1, timestamp=1265184360694, value=20 |
| 194 | T01 column=Products:P2, timestamp=1265184360758, value=40 |
| 195 | T01 column=Products:P3, timestamp=1265184360815, value=30 |
| 196 | T01 column=Products:P4, timestamp=1265184360866, value=50 |
| 197 | T01 column=Turnover:P1, timestamp=1265187021528, value=1 |
| 198 | T01 column=Turnover:P2, timestamp=1265187021528, value=1 |
| 199 | T01 column=Turnover:P3, timestamp=1265187021528, value=1 |
| 200 | T01 column=Turnover:P4, timestamp=1265187021528, value=1 |
| 201 | T01 column=Turnover:sum, timestamp=1265190421993, value=140 |
| 202 | T02 column=Detail:Locate, timestamp=1265184360951, value=02 |
| 203 | T02 column=Detail:Name, timestamp=1265184360910, value=Esing |
| 204 | T02 column=Products:P1, timestamp=1265184361051, value=50 |
| 205 | T02 column=Turnover:P1, timestamp=1265187021528, value=2 |
| 206 | T02 column=Turnover:sum, timestamp=1265190421993, value=100 |
| 207 | T03 column=Detail:Locate, timestamp=1265184361124, value=03 |
| 208 | T03 column=Detail:Name, timestamp=1265184361098, value=SunDon |
| 209 | T03 column=Products:P1, timestamp=1265184361189, value=40 |
| 210 | T03 column=Products:P2, timestamp=1265184361259, value=30 |
| 211 | T03 column=Turnover:P1, timestamp=1265187021529, value=3 |
| 212 | T03 column=Turnover:sum, timestamp=1265190421993, value=120 |
| 213 | T04 column=Detail:Locate, timestamp=1265184361311, value=04 |
| 214 | T04 column=Detail:Name, timestamp=1265184361287, value=StarBucks |
| 215 | T04 column=Products:P1, timestamp=1265184361343, value=50 |
| 216 | T04 column=Products:P2, timestamp=1265184361386, value=50 |
| 217 | T04 column=Products:P3, timestamp=1265184361422, value=20 |
| 218 | T04 column=Turnover:P1, timestamp=1265187021529, value=2 |
| 219 | T04 column=Turnover:P2, timestamp=1265187021529, value=1 |
| 220 | T04 column=Turnover:P3, timestamp=1265187021529, value=1 |
| 221 | T04 column=Turnover:sum, timestamp=1265190421993, value=170 |
| 222 | 4 row(s) in 0.0460 seconds |
| 223 | |
| 224 | }}} |
| 225 | |
| 226 | == 4. 建立索引資料表 == |
| 227 | [wiki:waue/2011/0425_Itri4SortTurnover Itri4SortTurnover.java] |
| 228 | |
| 229 | {{{ |
| 230 | $ /opt/hadoop/bin/hadoop jar ItriMenu.jar Itri4SortTurnover |
| 231 | }}} |
| 232 | |
| 233 | {{{ |
| 234 | > scan 'Itri-Sum' |
| 235 | ROW COLUMN+CELL |
| 236 | 100T02 column=Turnover:Sum, timestamp=1265190782127, value=100 |
| 237 | 100T02 column=__INDEX__:ROW, timestamp=1265190782127, value=T02 |
| 238 | 120T03 column=Turnover:Sum, timestamp=1265190782128, value=120 |
| 239 | 120T03 column=__INDEX__:ROW, timestamp=1265190782128, value=T03 |
| 240 | 140T01 column=Turnover:Sum, timestamp=1265190782126, value=140 |
| 241 | 140T01 column=__INDEX__:ROW, timestamp=1265190782126, value=T01 |
| 242 | 170T04 column=Turnover:Sum, timestamp=1265190782129, value=170 |
| 243 | 170T04 column=__INDEX__:ROW, timestamp=1265190782129, value=T04 |
| 244 | 4 row(s) in 0.0140 seconds |
| 245 | |
| 246 | }}} |
| 247 | |
| 248 | == 4.b 產生最終報表 == |
| 249 | |
| 250 | [wiki:waue/2011/0425_Itri5ShowReport Itri5ShowReport.java] |
| 251 | |
| 252 | {{{ |
| 253 | $ /opt/hadoop/bin/hadoop jar ItriMenu.jar Itri5ShowReport 130 |
| 254 | }}} |
| 255 | |