├── 1800.csv ├── LICENSE ├── Marvel-graph.txt ├── Marvel-names.txt ├── README.md ├── book.txt ├── customer-orders.csv ├── degrees-of-separation.py ├── fakefriends.csv ├── friends-by-age.py ├── max-temperatures.py ├── min-temperatures.py ├── most-popular-superhero.py ├── movie-recommendations-als-1m.py ├── movie-recommendations-als.py ├── movie-similarities-1m.py ├── movie-similarities-cluster.py ├── movie-similarities.py ├── popular-movies-dataframe.py ├── popular-movies-nicer.py ├── popular-movies.py ├── ratings-counter.py ├── regression.txt ├── spark-linear-regression.py ├── spark-sql.py ├── total-spent-by-customer-sorted.py ├── total-spent-by-customer.py ├── word-count-better-sorted.py ├── word-count-better.py └── word-count.py /1800.csv: -------------------------------------------------------------------------------- 1 | ITE00100554,18000101,TMAX,-75,,,E, 2 | ITE00100554,18000101,TMIN,-148,,,E, 3 | GM000010962,18000101,PRCP,0,,,E, 4 | EZE00100082,18000101,TMAX,-86,,,E, 5 | EZE00100082,18000101,TMIN,-135,,,E, 6 | ITE00100554,18000102,TMAX,-60,,I,E, 7 | ITE00100554,18000102,TMIN,-125,,,E, 8 | GM000010962,18000102,PRCP,0,,,E, 9 | EZE00100082,18000102,TMAX,-44,,,E, 10 | EZE00100082,18000102,TMIN,-130,,,E, 11 | ITE00100554,18000103,TMAX,-23,,,E, 12 | ITE00100554,18000103,TMIN,-46,,I,E, 13 | GM000010962,18000103,PRCP,4,,,E, 14 | EZE00100082,18000103,TMAX,-10,,,E, 15 | EZE00100082,18000103,TMIN,-73,,,E, 16 | ITE00100554,18000104,TMAX,0,,,E, 17 | ITE00100554,18000104,TMIN,-13,,,E, 18 | GM000010962,18000104,PRCP,0,,,E, 19 | EZE00100082,18000104,TMAX,-55,,,E, 20 | EZE00100082,18000104,TMIN,-74,,,E, 21 | ITE00100554,18000105,TMAX,10,,,E, 22 | ITE00100554,18000105,TMIN,-6,,,E, 23 | GM000010962,18000105,PRCP,0,,,E, 24 | EZE00100082,18000105,TMAX,-40,,,E, 25 | EZE00100082,18000105,TMIN,-58,,,E, 26 | ITE00100554,18000106,TMAX,13,,,E, 27 | ITE00100554,18000106,TMIN,13,,,E, 28 | GM000010962,18000106,PRCP,0,,,E, 29 | EZE00100082,18000106,TMAX,-39,,,E, 30 | EZE00100082,18000106,TMIN,-57,,,E, 31 | ITE00100554,18000107,TMAX,31,,,E, 32 | ITE00100554,18000107,TMIN,10,,,E, 33 | GM000010962,18000107,PRCP,0,,,E, 34 | EZE00100082,18000107,TMAX,-30,,,E, 35 | EZE00100082,18000107,TMIN,-50,,,E, 36 | ITE00100554,18000108,TMAX,29,,,E, 37 | ITE00100554,18000108,TMIN,14,,,E, 38 | GM000010962,18000108,PRCP,0,,,E, 39 | EZE00100082,18000108,TMAX,-1,,,E, 40 | EZE00100082,18000108,TMIN,-31,,,E, 41 | ITE00100554,18000109,TMAX,35,,,E, 42 | ITE00100554,18000109,TMIN,23,,,E, 43 | GM000010962,18000109,PRCP,0,,,E, 44 | EZE00100082,18000109,TMAX,5,,,E, 45 | EZE00100082,18000109,TMIN,-46,,,E, 46 | ITE00100554,18000110,TMAX,46,,,E, 47 | ITE00100554,18000110,TMIN,31,,,E, 48 | GM000010962,18000110,PRCP,0,,,E, 49 | EZE00100082,18000110,TMAX,-46,,,E, 50 | EZE00100082,18000110,TMIN,-75,,,E, 51 | ITE00100554,18000111,TMAX,66,,,E, 52 | ITE00100554,18000111,TMIN,41,,,E, 53 | GM000010962,18000111,PRCP,31,,,E, 54 | EZE00100082,18000111,TMAX,1,,,E, 55 | EZE00100082,18000111,TMIN,-62,,,E, 56 | ITE00100554,18000112,TMAX,41,,,E, 57 | ITE00100554,18000112,TMIN,29,,,E, 58 | GM000010962,18000112,PRCP,0,,,E, 59 | EZE00100082,18000112,TMAX,-33,,,E, 60 | EZE00100082,18000112,TMIN,-60,,,E, 61 | ITE00100554,18000113,TMAX,23,,,E, 62 | ITE00100554,18000113,TMIN,13,,,E, 63 | GM000010962,18000113,PRCP,3,,,E, 64 | EZE00100082,18000113,TMAX,-20,,,E, 65 | EZE00100082,18000113,TMIN,-60,,,E, 66 | ITE00100554,18000114,TMAX,41,,,E, 67 | ITE00100554,18000114,TMIN,23,,,E, 68 | GM000010962,18000114,PRCP,0,,,E, 69 | EZE00100082,18000114,TMAX,0,,,E, 70 | EZE00100082,18000114,TMIN,-35,,,E, 71 | ITE00100554,18000115,TMAX,54,,,E, 72 | ITE00100554,18000115,TMIN,41,,,E, 73 | GM000010962,18000115,PRCP,0,,,E, 74 | EZE00100082,18000115,TMAX,10,,,E, 75 | EZE00100082,18000115,TMIN,-23,,,E, 76 | ITE00100554,18000116,TMAX,56,,,E, 77 | ITE00100554,18000116,TMIN,41,,,E, 78 | GM000010962,18000116,PRCP,0,,,E, 79 | EZE00100082,18000116,TMAX,-11,,,E, 80 | EZE00100082,18000116,TMIN,-37,,,E, 81 | ITE00100554,18000117,TMAX,84,,,E, 82 | ITE00100554,18000117,TMIN,48,,,E, 83 | GM000010962,18000117,PRCP,0,,,E, 84 | EZE00100082,18000117,TMAX,14,,,E, 85 | EZE00100082,18000117,TMIN,-35,,,E, 86 | ITE00100554,18000118,TMAX,59,,,E, 87 | ITE00100554,18000118,TMIN,46,,,E, 88 | GM000010962,18000118,PRCP,2,,,E, 89 | EZE00100082,18000118,TMAX,47,,,E, 90 | EZE00100082,18000118,TMIN,9,,,E, 91 | ITE00100554,18000119,TMAX,59,,,E, 92 | ITE00100554,18000119,TMIN,50,,,E, 93 | GM000010962,18000119,PRCP,0,,,E, 94 | EZE00100082,18000119,TMAX,66,,,E, 95 | EZE00100082,18000119,TMIN,34,,,E, 96 | ITE00100554,18000120,TMAX,60,,,E, 97 | ITE00100554,18000120,TMIN,25,,,E, 98 | GM000010962,18000120,PRCP,4,,,E, 99 | EZE00100082,18000120,TMAX,58,,,E, 100 | EZE00100082,18000120,TMIN,17,,,E, 101 | ITE00100554,18000121,TMAX,80,,,E, 102 | ITE00100554,18000121,TMIN,30,,,E, 103 | GM000010962,18000121,PRCP,6,,,E, 104 | EZE00100082,18000121,TMAX,31,,,E, 105 | EZE00100082,18000121,TMIN,8,,,E, 106 | ITE00100554,18000122,TMAX,81,,,E, 107 | ITE00100554,18000122,TMIN,74,,,E, 108 | GM000010962,18000122,PRCP,68,,,E, 109 | EZE00100082,18000122,TMAX,8,,,E, 110 | EZE00100082,18000122,TMIN,-16,,,E, 111 | ITE00100554,18000123,TMAX,85,,,E, 112 | ITE00100554,18000123,TMIN,75,,,E, 113 | GM000010962,18000123,PRCP,18,,,E, 114 | EZE00100082,18000123,TMAX,18,,,E, 115 | EZE00100082,18000123,TMIN,-16,,,E, 116 | ITE00100554,18000124,TMAX,85,,,E, 117 | ITE00100554,18000124,TMIN,75,,,E, 118 | GM000010962,18000124,PRCP,0,,,E, 119 | EZE00100082,18000124,TMAX,31,,,E, 120 | EZE00100082,18000124,TMIN,-3,,,E, 121 | ITE00100554,18000125,TMAX,98,,,E, 122 | ITE00100554,18000125,TMIN,75,,,E, 123 | GM000010962,18000125,PRCP,0,,,E, 124 | EZE00100082,18000125,TMAX,35,,,E, 125 | EZE00100082,18000125,TMIN,2,,,E, 126 | ITE00100554,18000126,TMAX,75,,,E, 127 | ITE00100554,18000126,TMIN,34,,,E, 128 | GM000010962,18000126,PRCP,0,,,E, 129 | EZE00100082,18000126,TMAX,44,,,E, 130 | EZE00100082,18000126,TMIN,16,,,E, 131 | ITE00100554,18000127,TMAX,73,,,E, 132 | ITE00100554,18000127,TMIN,29,,,E, 133 | GM000010962,18000127,PRCP,0,,,E, 134 | EZE00100082,18000127,TMAX,57,,,E, 135 | EZE00100082,18000127,TMIN,15,,,E, 136 | ITE00100554,18000128,TMAX,79,,,E, 137 | ITE00100554,18000128,TMIN,54,,,E, 138 | GM000010962,18000128,PRCP,4,,,E, 139 | EZE00100082,18000128,TMAX,69,,,E, 140 | EZE00100082,18000128,TMIN,33,,,E, 141 | ITE00100554,18000129,TMAX,73,,,E, 142 | ITE00100554,18000129,TMIN,50,,,E, 143 | GM000010962,18000129,PRCP,0,,,E, 144 | EZE00100082,18000129,TMAX,67,,,E, 145 | EZE00100082,18000129,TMIN,19,,,E, 146 | ITE00100554,18000130,TMAX,66,,,E, 147 | ITE00100554,18000130,TMIN,50,,,E, 148 | GM000010962,18000130,PRCP,0,,,E, 149 | EZE00100082,18000130,TMAX,29,,,E, 150 | EZE00100082,18000130,TMIN,3,,,E, 151 | ITE00100554,18000131,TMAX,85,,,E, 152 | ITE00100554,18000131,TMIN,50,,,E, 153 | GM000010962,18000131,PRCP,0,,,E, 154 | EZE00100082,18000131,TMAX,62,,,E, 155 | EZE00100082,18000131,TMIN,23,,,E, 156 | ITE00100554,18000201,TMAX,91,,,E, 157 | ITE00100554,18000201,TMIN,63,,,E, 158 | GM000010962,18000201,PRCP,13,,,E, 159 | EZE00100082,18000201,TMAX,48,,,E, 160 | EZE00100082,18000201,TMIN,17,,,E, 161 | ITE00100554,18000202,TMAX,66,,,E, 162 | ITE00100554,18000202,TMIN,54,,,E, 163 | GM000010962,18000202,PRCP,16,,,E, 164 | EZE00100082,18000202,TMAX,67,,,E, 165 | EZE00100082,18000202,TMIN,19,,,E, 166 | ITE00100554,18000203,TMAX,56,,,E, 167 | ITE00100554,18000203,TMIN,54,,,E, 168 | GM000010962,18000203,PRCP,0,,,E, 169 | EZE00100082,18000203,TMAX,53,,,E, 170 | EZE00100082,18000203,TMIN,2,,,E, 171 | ITE00100554,18000204,TMAX,104,,,E, 172 | ITE00100554,18000204,TMIN,59,,,E, 173 | GM000010962,18000204,PRCP,0,,,E, 174 | EZE00100082,18000204,TMAX,66,,,E, 175 | EZE00100082,18000204,TMIN,39,,,E, 176 | ITE00100554,18000205,TMAX,79,,,E, 177 | ITE00100554,18000205,TMIN,46,,,E, 178 | GM000010962,18000205,PRCP,0,,,E, 179 | EZE00100082,18000205,TMAX,59,,,E, 180 | EZE00100082,18000205,TMIN,22,,,E, 181 | ITE00100554,18000206,TMAX,75,,,E, 182 | ITE00100554,18000206,TMIN,41,,,E, 183 | GM000010962,18000206,PRCP,0,,,E, 184 | EZE00100082,18000206,TMAX,24,,,E, 185 | EZE00100082,18000206,TMIN,-3,,,E, 186 | ITE00100554,18000207,TMAX,73,,,E, 187 | ITE00100554,18000207,TMIN,35,,,E, 188 | GM000010962,18000207,PRCP,6,,,E, 189 | EZE00100082,18000207,TMAX,4,,,E, 190 | EZE00100082,18000207,TMIN,-22,,,E, 191 | ITE00100554,18000208,TMAX,50,,,E, 192 | ITE00100554,18000208,TMIN,25,,,E, 193 | GM000010962,18000208,PRCP,0,,,E, 194 | EZE00100082,18000208,TMAX,-20,,,E, 195 | EZE00100082,18000208,TMIN,-39,,,E, 196 | ITE00100554,18000209,TMAX,35,,,E, 197 | ITE00100554,18000209,TMIN,0,,,E, 198 | GM000010962,18000209,PRCP,0,,,E, 199 | EZE00100082,18000209,TMAX,-17,,,E, 200 | EZE00100082,18000209,TMIN,-36,,,E, 201 | ITE00100554,18000210,TMAX,38,,,E, 202 | ITE00100554,18000210,TMIN,16,,,E, 203 | GM000010962,18000210,PRCP,0,,,E, 204 | EZE00100082,18000210,TMAX,-25,,,E, 205 | EZE00100082,18000210,TMIN,-69,,,E, 206 | ITE00100554,18000211,TMAX,21,,,E, 207 | ITE00100554,18000211,TMIN,9,,,E, 208 | GM000010962,18000211,PRCP,0,,,E, 209 | EZE00100082,18000211,TMAX,-34,,,E, 210 | EZE00100082,18000211,TMIN,-102,,,E, 211 | ITE00100554,18000212,TMAX,13,,,E, 212 | ITE00100554,18000212,TMIN,3,,,E, 213 | GM000010962,18000212,PRCP,0,,,E, 214 | EZE00100082,18000212,TMAX,-22,,,E, 215 | EZE00100082,18000212,TMIN,-78,,,E, 216 | ITE00100554,18000213,TMAX,13,,,E, 217 | ITE00100554,18000213,TMIN,0,,,E, 218 | GM000010962,18000213,PRCP,0,,,E, 219 | EZE00100082,18000213,TMAX,1,,,E, 220 | EZE00100082,18000213,TMIN,-42,,,E, 221 | ITE00100554,18000214,TMAX,13,,,E, 222 | ITE00100554,18000214,TMIN,0,,,E, 223 | GM000010962,18000214,PRCP,0,,,E, 224 | EZE00100082,18000214,TMAX,5,,,E, 225 | EZE00100082,18000214,TMIN,-35,,,E, 226 | ITE00100554,18000215,TMAX,21,,,E, 227 | ITE00100554,18000215,TMIN,13,,,E, 228 | GM000010962,18000215,PRCP,0,,,E, 229 | EZE00100082,18000215,TMAX,18,,,E, 230 | EZE00100082,18000215,TMIN,0,,,E, 231 | ITE00100554,18000216,TMAX,75,,,E, 232 | ITE00100554,18000216,TMIN,13,,,E, 233 | GM000010962,18000216,PRCP,7,,,E, 234 | EZE00100082,18000216,TMAX,24,,,E, 235 | EZE00100082,18000216,TMIN,-6,,,E, 236 | ITE00100554,18000217,TMAX,71,,,E, 237 | ITE00100554,18000217,TMIN,23,,,E, 238 | GM000010962,18000217,PRCP,0,,,E, 239 | EZE00100082,18000217,TMAX,20,,,E, 240 | EZE00100082,18000217,TMIN,-13,,,E, 241 | ITE00100554,18000218,TMAX,48,,,E, 242 | ITE00100554,18000218,TMIN,21,,,E, 243 | GM000010962,18000218,PRCP,0,,,E, 244 | EZE00100082,18000218,TMAX,0,,,E, 245 | EZE00100082,18000218,TMIN,-52,,,E, 246 | ITE00100554,18000219,TMAX,50,,,E, 247 | ITE00100554,18000219,TMIN,38,,,E, 248 | GM000010962,18000219,PRCP,0,,,E, 249 | EZE00100082,18000219,TMAX,-6,,,E, 250 | EZE00100082,18000219,TMIN,-50,,,E, 251 | ITE00100554,18000220,TMAX,66,,,E, 252 | ITE00100554,18000220,TMIN,38,,,E, 253 | GM000010962,18000220,PRCP,0,,,E, 254 | EZE00100082,18000220,TMAX,-34,,,E, 255 | EZE00100082,18000220,TMIN,-72,,,E, 256 | ITE00100554,18000221,TMAX,66,,,E, 257 | ITE00100554,18000221,TMIN,25,,,E, 258 | GM000010962,18000221,PRCP,0,,,E, 259 | EZE00100082,18000221,TMAX,-16,,,E, 260 | EZE00100082,18000221,TMIN,-60,,,E, 261 | ITE00100554,18000222,TMAX,63,,,E, 262 | ITE00100554,18000222,TMIN,48,,,E, 263 | GM000010962,18000222,PRCP,0,,,E, 264 | EZE00100082,18000222,TMAX,33,,,E, 265 | EZE00100082,18000222,TMIN,-42,,,E, 266 | ITE00100554,18000223,TMAX,81,,,E, 267 | ITE00100554,18000223,TMIN,54,,,E, 268 | GM000010962,18000223,PRCP,0,,,E, 269 | EZE00100082,18000223,TMAX,40,,,E, 270 | EZE00100082,18000223,TMIN,17,,,E, 271 | ITE00100554,18000224,TMAX,104,,,E, 272 | ITE00100554,18000224,TMIN,73,,,E, 273 | GM000010962,18000224,PRCP,0,,,E, 274 | EZE00100082,18000224,TMAX,56,,,E, 275 | EZE00100082,18000224,TMIN,14,,,E, 276 | ITE00100554,18000225,TMAX,116,,,E, 277 | ITE00100554,18000225,TMIN,60,,,E, 278 | GM000010962,18000225,PRCP,0,,,E, 279 | EZE00100082,18000225,TMAX,20,,,E, 280 | EZE00100082,18000225,TMIN,4,,,E, 281 | ITE00100554,18000226,TMAX,129,,,E, 282 | ITE00100554,18000226,TMIN,88,,,E, 283 | GM000010962,18000226,PRCP,0,,,E, 284 | EZE00100082,18000226,TMAX,15,,,E, 285 | EZE00100082,18000226,TMIN,-57,,,E, 286 | ITE00100554,18000227,TMAX,100,,,E, 287 | ITE00100554,18000227,TMIN,88,,I,E, 288 | GM000010962,18000227,PRCP,6,,,E, 289 | EZE00100082,18000227,TMAX,-39,,,E, 290 | EZE00100082,18000227,TMIN,-74,,,E, 291 | ITE00100554,18000228,TMAX,75,,I,E, 292 | ITE00100554,18000228,TMIN,63,,,E, 293 | GM000010962,18000228,PRCP,0,,,E, 294 | EZE00100082,18000228,TMAX,25,,,E, 295 | EZE00100082,18000228,TMIN,-43,,,E, 296 | ITE00100554,18000301,TMAX,100,,,E, 297 | ITE00100554,18000301,TMIN,66,,,E, 298 | GM000010962,18000301,PRCP,42,,,E, 299 | EZE00100082,18000301,TMAX,-21,,,E, 300 | EZE00100082,18000301,TMIN,-37,,,E, 301 | ITE00100554,18000302,TMAX,79,,,E, 302 | ITE00100554,18000302,TMIN,60,,,E, 303 | GM000010962,18000302,PRCP,16,,,E, 304 | EZE00100082,18000302,TMAX,4,,,E, 305 | EZE00100082,18000302,TMIN,-40,,,E, 306 | ITE00100554,18000303,TMAX,54,,,E, 307 | ITE00100554,18000303,TMIN,46,,,E, 308 | GM000010962,18000303,PRCP,6,,,E, 309 | EZE00100082,18000303,TMAX,10,,,E, 310 | EZE00100082,18000303,TMIN,-30,,,E, 311 | ITE00100554,18000304,TMAX,84,,,E, 312 | ITE00100554,18000304,TMIN,29,,,E, 313 | GM000010962,18000304,PRCP,0,,,E, 314 | EZE00100082,18000304,TMAX,32,,,E, 315 | EZE00100082,18000304,TMIN,-23,,,E, 316 | ITE00100554,18000305,TMAX,79,,,E, 317 | ITE00100554,18000305,TMIN,21,,,E, 318 | GM000010962,18000305,PRCP,4,,,E, 319 | EZE00100082,18000305,TMAX,-14,,,E, 320 | EZE00100082,18000305,TMIN,-47,,,E, 321 | ITE00100554,18000306,TMAX,60,,,E, 322 | ITE00100554,18000306,TMIN,29,,,E, 323 | GM000010962,18000306,PRCP,0,,,E, 324 | EZE00100082,18000306,TMAX,-34,,,E, 325 | EZE00100082,18000306,TMIN,-70,,,E, 326 | ITE00100554,18000307,TMAX,34,,,E, 327 | ITE00100554,18000307,TMIN,16,,,E, 328 | GM000010962,18000307,PRCP,0,,,E, 329 | EZE00100082,18000307,TMAX,-42,,,E, 330 | EZE00100082,18000307,TMIN,-89,,,E, 331 | ITE00100554,18000308,TMAX,38,,,E, 332 | ITE00100554,18000308,TMIN,0,,,E, 333 | GM000010962,18000308,PRCP,0,,,E, 334 | EZE00100082,18000308,TMAX,-49,,,E, 335 | EZE00100082,18000308,TMIN,-130,,,E, 336 | ITE00100554,18000309,TMAX,79,,,E, 337 | ITE00100554,18000309,TMIN,16,,,E, 338 | GM000010962,18000309,PRCP,30,,,E, 339 | EZE00100082,18000309,TMAX,-63,,,E, 340 | EZE00100082,18000309,TMIN,-93,,,E, 341 | ITE00100554,18000310,TMAX,75,,,E, 342 | ITE00100554,18000310,TMIN,25,,,E, 343 | GM000010962,18000310,PRCP,0,,,E, 344 | EZE00100082,18000310,TMAX,-34,,,E, 345 | EZE00100082,18000310,TMIN,-110,,,E, 346 | ITE00100554,18000311,TMAX,79,,,E, 347 | ITE00100554,18000311,TMIN,29,,,E, 348 | GM000010962,18000311,PRCP,0,,,E, 349 | EZE00100082,18000311,TMAX,-33,,,E, 350 | EZE00100082,18000311,TMIN,-107,,,E, 351 | ITE00100554,18000312,TMAX,69,,,E, 352 | ITE00100554,18000312,TMIN,41,,,E, 353 | GM000010962,18000312,PRCP,7,,,E, 354 | EZE00100082,18000312,TMAX,-22,,,E, 355 | EZE00100082,18000312,TMIN,-87,,,E, 356 | ITE00100554,18000313,TMAX,75,,,E, 357 | ITE00100554,18000313,TMIN,44,,,E, 358 | GM000010962,18000313,PRCP,0,,,E, 359 | EZE00100082,18000313,TMAX,-24,,,E, 360 | EZE00100082,18000313,TMIN,-110,,,E, 361 | ITE00100554,18000314,TMAX,100,,,E, 362 | ITE00100554,18000314,TMIN,25,,,E, 363 | GM000010962,18000314,PRCP,0,,,E, 364 | EZE00100082,18000314,TMAX,11,,,E, 365 | EZE00100082,18000314,TMIN,-61,,,E, 366 | ITE00100554,18000315,TMAX,109,,,E, 367 | ITE00100554,18000315,TMIN,50,,,E, 368 | GM000010962,18000315,PRCP,0,,,E, 369 | EZE00100082,18000315,TMAX,-1,,,E, 370 | EZE00100082,18000315,TMIN,-52,,,E, 371 | ITE00100554,18000316,TMAX,113,,,E, 372 | ITE00100554,18000316,TMIN,35,,,E, 373 | GM000010962,18000316,PRCP,0,,,E, 374 | EZE00100082,18000316,TMAX,10,,,E, 375 | EZE00100082,18000316,TMIN,-67,,,E, 376 | ITE00100554,18000317,TMAX,109,,,E, 377 | ITE00100554,18000317,TMIN,54,,,E, 378 | GM000010962,18000317,PRCP,0,,,E, 379 | EZE00100082,18000317,TMAX,30,,,E, 380 | EZE00100082,18000317,TMIN,-52,,,E, 381 | ITE00100554,18000318,TMAX,91,,,E, 382 | ITE00100554,18000318,TMIN,56,,,E, 383 | GM000010962,18000318,PRCP,4,,,E, 384 | EZE00100082,18000318,TMAX,26,,,E, 385 | EZE00100082,18000318,TMIN,-35,,,E, 386 | ITE00100554,18000319,TMAX,125,,,E, 387 | ITE00100554,18000319,TMIN,60,,,E, 388 | GM000010962,18000319,PRCP,17,,,E, 389 | EZE00100082,18000319,TMAX,36,,,E, 390 | EZE00100082,18000319,TMIN,-19,,,E, 391 | ITE00100554,18000320,TMAX,116,,,E, 392 | ITE00100554,18000320,TMIN,73,,,E, 393 | GM000010962,18000320,PRCP,20,,,E, 394 | EZE00100082,18000320,TMAX,13,,,E, 395 | EZE00100082,18000320,TMIN,-38,,,E, 396 | ITE00100554,18000321,TMAX,109,,,E, 397 | ITE00100554,18000321,TMIN,50,,,E, 398 | GM000010962,18000321,PRCP,6,,,E, 399 | EZE00100082,18000321,TMAX,15,,,E, 400 | EZE00100082,18000321,TMIN,-48,,,E, 401 | ITE00100554,18000322,TMAX,71,,,E, 402 | ITE00100554,18000322,TMIN,48,,,E, 403 | GM000010962,18000322,PRCP,25,,,E, 404 | EZE00100082,18000322,TMAX,14,,,E, 405 | EZE00100082,18000322,TMIN,-57,,,E, 406 | ITE00100554,18000323,TMAX,75,,,E, 407 | ITE00100554,18000323,TMIN,19,,,E, 408 | GM000010962,18000323,PRCP,4,,,E, 409 | EZE00100082,18000323,TMAX,4,,,E, 410 | EZE00100082,18000323,TMIN,-78,,,E, 411 | ITE00100554,18000324,TMAX,81,,,E, 412 | ITE00100554,18000324,TMIN,10,,,E, 413 | GM000010962,18000324,PRCP,0,,,E, 414 | EZE00100082,18000324,TMAX,33,,,E, 415 | EZE00100082,18000324,TMIN,-24,,,E, 416 | ITE00100554,18000325,TMAX,85,,,E, 417 | ITE00100554,18000325,TMIN,25,,,E, 418 | GM000010962,18000325,PRCP,0,,,E, 419 | EZE00100082,18000325,TMAX,68,,,E, 420 | EZE00100082,18000325,TMIN,8,,,E, 421 | ITE00100554,18000326,TMAX,110,,,E, 422 | ITE00100554,18000326,TMIN,31,,,E, 423 | GM000010962,18000326,PRCP,0,,,E, 424 | EZE00100082,18000326,TMAX,71,,,E, 425 | EZE00100082,18000326,TMIN,9,,,E, 426 | ITE00100554,18000327,TMAX,113,,,E, 427 | ITE00100554,18000327,TMIN,48,,,E, 428 | GM000010962,18000327,PRCP,0,,,E, 429 | EZE00100082,18000327,TMAX,84,,,E, 430 | EZE00100082,18000327,TMIN,-5,,,E, 431 | ITE00100554,18000328,TMAX,125,,,E, 432 | ITE00100554,18000328,TMIN,54,,,E, 433 | GM000010962,18000328,PRCP,0,,,E, 434 | EZE00100082,18000328,TMAX,86,,,E, 435 | EZE00100082,18000328,TMIN,-23,,,E, 436 | ITE00100554,18000329,TMAX,110,,,E, 437 | ITE00100554,18000329,TMIN,85,,,E, 438 | GM000010962,18000329,PRCP,0,,,E, 439 | EZE00100082,18000329,TMAX,82,,,E, 440 | EZE00100082,18000329,TMIN,4,,,E, 441 | ITE00100554,18000330,TMAX,141,,,E, 442 | ITE00100554,18000330,TMIN,85,,,E, 443 | GM000010962,18000330,PRCP,0,,,E, 444 | EZE00100082,18000330,TMAX,91,,,E, 445 | EZE00100082,18000330,TMIN,10,,,E, 446 | ITE00100554,18000331,TMAX,138,,,E, 447 | ITE00100554,18000331,TMIN,75,,,E, 448 | GM000010962,18000331,PRCP,0,,,E, 449 | EZE00100082,18000331,TMAX,123,,,E, 450 | EZE00100082,18000331,TMIN,11,,,E, 451 | ITE00100554,18000401,TMAX,109,,,E, 452 | ITE00100554,18000401,TMIN,100,,,E, 453 | GM000010962,18000401,PRCP,0,,,E, 454 | EZE00100082,18000401,TMAX,98,,,E, 455 | EZE00100082,18000401,TMIN,50,,,E, 456 | ITE00100554,18000402,TMAX,104,,,E, 457 | ITE00100554,18000402,TMIN,98,,,E, 458 | GM000010962,18000402,PRCP,9,,,E, 459 | EZE00100082,18000402,TMAX,128,,,E, 460 | EZE00100082,18000402,TMIN,59,,,E, 461 | ITE00100554,18000403,TMAX,128,,,E, 462 | ITE00100554,18000403,TMIN,75,,,E, 463 | GM000010962,18000403,PRCP,0,,,E, 464 | EZE00100082,18000403,TMAX,116,,,E, 465 | EZE00100082,18000403,TMIN,61,,,E, 466 | ITE00100554,18000404,TMAX,153,,,E, 467 | ITE00100554,18000404,TMIN,75,,,E, 468 | GM000010962,18000404,PRCP,0,,,E, 469 | EZE00100082,18000404,TMAX,157,,,E, 470 | EZE00100082,18000404,TMIN,69,,,E, 471 | ITE00100554,18000405,TMAX,166,,,E, 472 | ITE00100554,18000405,TMIN,84,,,E, 473 | GM000010962,18000405,PRCP,0,,,E, 474 | EZE00100082,18000405,TMAX,134,,,E, 475 | EZE00100082,18000405,TMIN,65,,,E, 476 | ITE00100554,18000406,TMAX,178,,,E, 477 | ITE00100554,18000406,TMIN,96,,,E, 478 | GM000010962,18000406,PRCP,0,,,E, 479 | EZE00100082,18000406,TMAX,168,,,E, 480 | EZE00100082,18000406,TMIN,95,,,E, 481 | ITE00100554,18000407,TMAX,198,,,E, 482 | ITE00100554,18000407,TMIN,99,,,E, 483 | GM000010962,18000407,PRCP,0,,,E, 484 | EZE00100082,18000407,TMAX,160,,,E, 485 | EZE00100082,18000407,TMIN,74,,,E, 486 | ITE00100554,18000408,TMAX,200,,,E, 487 | ITE00100554,18000408,TMIN,109,,,E, 488 | GM000010962,18000408,PRCP,0,,,E, 489 | EZE00100082,18000408,TMAX,203,,,E, 490 | EZE00100082,18000408,TMIN,75,,,E, 491 | ITE00100554,18000409,TMAX,200,,,E, 492 | ITE00100554,18000409,TMIN,148,,,E, 493 | GM000010962,18000409,PRCP,0,,,E, 494 | EZE00100082,18000409,TMAX,193,,,E, 495 | EZE00100082,18000409,TMIN,105,,,E, 496 | ITE00100554,18000410,TMAX,200,,,E, 497 | ITE00100554,18000410,TMIN,129,,,E, 498 | GM000010962,18000410,PRCP,0,,,E, 499 | EZE00100082,18000410,TMAX,212,,,E, 500 | EZE00100082,18000410,TMIN,125,,,E, 501 | ITE00100554,18000411,TMAX,200,,,E, 502 | ITE00100554,18000411,TMIN,141,,,E, 503 | GM000010962,18000411,PRCP,0,,,E, 504 | EZE00100082,18000411,TMAX,171,,,E, 505 | EZE00100082,18000411,TMIN,95,,,E, 506 | ITE00100554,18000412,TMAX,200,,,E, 507 | ITE00100554,18000412,TMIN,116,,,E, 508 | GM000010962,18000412,PRCP,10,,,E, 509 | EZE00100082,18000412,TMAX,170,,,E, 510 | EZE00100082,18000412,TMIN,55,,,E, 511 | ITE00100554,18000413,TMAX,181,,,E, 512 | ITE00100554,18000413,TMIN,129,,,E, 513 | GM000010962,18000413,PRCP,40,,,E, 514 | EZE00100082,18000413,TMAX,185,,,E, 515 | EZE00100082,18000413,TMIN,99,,,E, 516 | ITE00100554,18000414,TMAX,188,,,E, 517 | ITE00100554,18000414,TMIN,91,,,E, 518 | GM000010962,18000414,PRCP,2,,,E, 519 | EZE00100082,18000414,TMAX,145,,,E, 520 | EZE00100082,18000414,TMIN,87,,,E, 521 | ITE00100554,18000415,TMAX,206,,,E, 522 | ITE00100554,18000415,TMIN,116,,,E, 523 | GM000010962,18000415,PRCP,0,,,E, 524 | EZE00100082,18000415,TMAX,194,,,E, 525 | EZE00100082,18000415,TMIN,109,,,E, 526 | ITE00100554,18000416,TMAX,216,,,E, 527 | ITE00100554,18000416,TMIN,129,,,E, 528 | GM000010962,18000416,PRCP,0,,,E, 529 | EZE00100082,18000416,TMAX,203,,,E, 530 | EZE00100082,18000416,TMIN,102,,,E, 531 | ITE00100554,18000417,TMAX,213,,,E, 532 | ITE00100554,18000417,TMIN,129,,,E, 533 | GM000010962,18000417,PRCP,0,,,E, 534 | EZE00100082,18000417,TMAX,248,,,E, 535 | EZE00100082,18000417,TMIN,110,,,E, 536 | ITE00100554,18000418,TMAX,216,,,E, 537 | ITE00100554,18000418,TMIN,134,,,E, 538 | GM000010962,18000418,PRCP,0,,,E, 539 | EZE00100082,18000418,TMAX,246,,,E, 540 | EZE00100082,18000418,TMIN,130,,,E, 541 | ITE00100554,18000419,TMAX,191,,,E, 542 | ITE00100554,18000419,TMIN,138,,,E, 543 | GM000010962,18000419,PRCP,5,,,E, 544 | EZE00100082,18000419,TMAX,208,,,E, 545 | EZE00100082,18000419,TMIN,146,,,E, 546 | ITE00100554,18000420,TMAX,231,,,E, 547 | ITE00100554,18000420,TMIN,150,,,E, 548 | GM000010962,18000420,PRCP,34,,,E, 549 | EZE00100082,18000420,TMAX,212,,,E, 550 | EZE00100082,18000420,TMIN,125,,,E, 551 | ITE00100554,18000421,TMAX,235,,,E, 552 | ITE00100554,18000421,TMIN,154,,,E, 553 | GM000010962,18000421,PRCP,2,,,E, 554 | EZE00100082,18000421,TMAX,228,,,E, 555 | EZE00100082,18000421,TMIN,153,,,E, 556 | ITE00100554,18000422,TMAX,216,,,E, 557 | ITE00100554,18000422,TMIN,166,,,E, 558 | GM000010962,18000422,PRCP,0,,,E, 559 | EZE00100082,18000422,TMAX,277,,,E, 560 | EZE00100082,18000422,TMIN,157,,,E, 561 | ITE00100554,18000423,TMAX,191,,,E, 562 | ITE00100554,18000423,TMIN,166,,,E, 563 | GM000010962,18000423,PRCP,0,,,E, 564 | EZE00100082,18000423,TMAX,250,,,E, 565 | EZE00100082,18000423,TMIN,185,,,E, 566 | ITE00100554,18000424,TMAX,204,,,E, 567 | ITE00100554,18000424,TMIN,146,,,E, 568 | GM000010962,18000424,PRCP,0,,,E, 569 | EZE00100082,18000424,TMAX,238,,,E, 570 | EZE00100082,18000424,TMIN,177,,,E, 571 | ITE00100554,18000425,TMAX,163,,,E, 572 | ITE00100554,18000425,TMIN,150,,,E, 573 | GM000010962,18000425,PRCP,0,,,E, 574 | EZE00100082,18000425,TMAX,230,,,E, 575 | EZE00100082,18000425,TMIN,166,,,E, 576 | ITE00100554,18000426,TMAX,179,,,E, 577 | ITE00100554,18000426,TMIN,154,,,E, 578 | GM000010962,18000426,PRCP,0,,,E, 579 | EZE00100082,18000426,TMAX,258,,,E, 580 | EZE00100082,18000426,TMIN,158,,,E, 581 | ITE00100554,18000427,TMAX,204,,,E, 582 | ITE00100554,18000427,TMIN,154,,,E, 583 | GM000010962,18000427,PRCP,0,,,E, 584 | EZE00100082,18000427,TMAX,279,,,E, 585 | EZE00100082,18000427,TMIN,160,,,E, 586 | ITE00100554,18000428,TMAX,223,,,E, 587 | ITE00100554,18000428,TMIN,159,,,E, 588 | GM000010962,18000428,PRCP,0,,,E, 589 | EZE00100082,18000428,TMAX,259,,,E, 590 | EZE00100082,18000428,TMIN,180,,,E, 591 | ITE00100554,18000429,TMAX,225,,,E, 592 | ITE00100554,18000429,TMIN,169,,,E, 593 | GM000010962,18000429,PRCP,0,,,E, 594 | EZE00100082,18000429,TMAX,286,,,E, 595 | EZE00100082,18000429,TMIN,166,,,E, 596 | ITE00100554,18000430,TMAX,206,,,E, 597 | ITE00100554,18000430,TMIN,159,,,E, 598 | GM000010962,18000430,PRCP,0,,,E, 599 | EZE00100082,18000430,TMAX,273,,,E, 600 | EZE00100082,18000430,TMIN,147,,,E, 601 | ITE00100554,18000501,TMAX,206,,,E, 602 | ITE00100554,18000501,TMIN,160,,,E, 603 | GM000010962,18000501,PRCP,97,,,E, 604 | EZE00100082,18000501,TMAX,183,,,E, 605 | EZE00100082,18000501,TMIN,127,,,E, 606 | ITE00100554,18000502,TMAX,223,,,E, 607 | ITE00100554,18000502,TMIN,160,,,E, 608 | GM000010962,18000502,PRCP,3,,,E, 609 | EZE00100082,18000502,TMAX,226,,,E, 610 | EZE00100082,18000502,TMIN,139,,,E, 611 | ITE00100554,18000503,TMAX,235,,,E, 612 | ITE00100554,18000503,TMIN,154,,,E, 613 | GM000010962,18000503,PRCP,0,,,E, 614 | EZE00100082,18000503,TMAX,240,,,E, 615 | EZE00100082,18000503,TMIN,164,,,E, 616 | ITE00100554,18000504,TMAX,238,,,E, 617 | ITE00100554,18000504,TMIN,156,,,E, 618 | GM000010962,18000504,PRCP,0,,,E, 619 | EZE00100082,18000504,TMAX,231,,,E, 620 | EZE00100082,18000504,TMIN,152,,,E, 621 | ITE00100554,18000505,TMAX,225,,,E, 622 | ITE00100554,18000505,TMIN,160,,,E, 623 | GM000010962,18000505,PRCP,0,,,E, 624 | EZE00100082,18000505,TMAX,217,,,E, 625 | EZE00100082,18000505,TMIN,160,,,E, 626 | ITE00100554,18000506,TMAX,175,,,E, 627 | ITE00100554,18000506,TMIN,140,,,E, 628 | GM000010962,18000506,PRCP,0,,,E, 629 | EZE00100082,18000506,TMAX,214,,,E, 630 | EZE00100082,18000506,TMIN,136,,,E, 631 | ITE00100554,18000507,TMAX,188,,,E, 632 | ITE00100554,18000507,TMIN,96,,,E, 633 | GM000010962,18000507,PRCP,0,,,E, 634 | EZE00100082,18000507,TMAX,231,,,E, 635 | EZE00100082,18000507,TMIN,116,,,E, 636 | ITE00100554,18000508,TMAX,213,,,E, 637 | ITE00100554,18000508,TMIN,121,,,E, 638 | GM000010962,18000508,PRCP,0,,,E, 639 | EZE00100082,18000508,TMAX,240,,,E, 640 | EZE00100082,18000508,TMIN,130,,,E, 641 | ITE00100554,18000509,TMAX,225,,,E, 642 | ITE00100554,18000509,TMIN,134,,,E, 643 | GM000010962,18000509,PRCP,0,,,E, 644 | EZE00100082,18000509,TMAX,245,,,E, 645 | EZE00100082,18000509,TMIN,151,,,E, 646 | ITE00100554,18000510,TMAX,188,,,E, 647 | ITE00100554,18000510,TMIN,154,,,E, 648 | GM000010962,18000510,PRCP,0,,,E, 649 | EZE00100082,18000510,TMAX,241,,,E, 650 | EZE00100082,18000510,TMIN,149,,,E, 651 | ITE00100554,18000511,TMAX,210,,,E, 652 | ITE00100554,18000511,TMIN,154,,,E, 653 | GM000010962,18000511,PRCP,11,,,E, 654 | EZE00100082,18000511,TMAX,162,,,E, 655 | EZE00100082,18000511,TMIN,103,,,E, 656 | ITE00100554,18000512,TMAX,204,,,E, 657 | ITE00100554,18000512,TMIN,150,,,E, 658 | GM000010962,18000512,PRCP,7,,,E, 659 | EZE00100082,18000512,TMAX,162,,,E, 660 | EZE00100082,18000512,TMIN,100,,,E, 661 | ITE00100554,18000513,TMAX,188,,,E, 662 | ITE00100554,18000513,TMIN,154,,,E, 663 | GM000010962,18000513,PRCP,25,,,E, 664 | EZE00100082,18000513,TMAX,197,,,E, 665 | EZE00100082,18000513,TMIN,122,,,E, 666 | ITE00100554,18000514,TMAX,200,,,E, 667 | ITE00100554,18000514,TMIN,134,,,E, 668 | GM000010962,18000514,PRCP,35,,,E, 669 | EZE00100082,18000514,TMAX,209,,,E, 670 | EZE00100082,18000514,TMIN,125,,,E, 671 | ITE00100554,18000515,TMAX,213,,,E, 672 | ITE00100554,18000515,TMIN,135,,,E, 673 | GM000010962,18000515,PRCP,7,,,E, 674 | EZE00100082,18000515,TMAX,161,,,E, 675 | EZE00100082,18000515,TMIN,116,,,E, 676 | ITE00100554,18000516,TMAX,213,,,E, 677 | ITE00100554,18000516,TMIN,135,,,E, 678 | GM000010962,18000516,PRCP,279,,,E, 679 | EZE00100082,18000516,TMAX,188,,,E, 680 | EZE00100082,18000516,TMIN,129,,,E, 681 | ITE00100554,18000517,TMAX,209,,,E, 682 | ITE00100554,18000517,TMIN,160,,,E, 683 | GM000010962,18000517,PRCP,0,,,E, 684 | EZE00100082,18000517,TMAX,220,,,E, 685 | EZE00100082,18000517,TMIN,124,,,E, 686 | ITE00100554,18000518,TMAX,213,,,E, 687 | ITE00100554,18000518,TMIN,146,,,E, 688 | GM000010962,18000518,PRCP,43,,,E, 689 | EZE00100082,18000518,TMAX,186,,,E, 690 | EZE00100082,18000518,TMIN,119,,,E, 691 | ITE00100554,18000519,TMAX,200,,,E, 692 | ITE00100554,18000519,TMIN,135,,,E, 693 | GM000010962,18000519,PRCP,0,,,E, 694 | EZE00100082,18000519,TMAX,172,,,E, 695 | EZE00100082,18000519,TMIN,105,,,E, 696 | ITE00100554,18000520,TMAX,225,,,E, 697 | ITE00100554,18000520,TMIN,138,,,E, 698 | GM000010962,18000520,PRCP,0,,,E, 699 | EZE00100082,18000520,TMAX,225,,,E, 700 | EZE00100082,18000520,TMIN,115,,,E, 701 | ITE00100554,18000521,TMAX,238,,,E, 702 | ITE00100554,18000521,TMIN,179,,,E, 703 | GM000010962,18000521,PRCP,0,,,E, 704 | EZE00100082,18000521,TMAX,247,,,E, 705 | EZE00100082,18000521,TMIN,136,,,E, 706 | ITE00100554,18000522,TMAX,263,,,E, 707 | ITE00100554,18000522,TMIN,166,,,E, 708 | GM000010962,18000522,PRCP,43,,,E, 709 | EZE00100082,18000522,TMAX,262,,,E, 710 | EZE00100082,18000522,TMIN,157,,,E, 711 | ITE00100554,18000523,TMAX,250,,,E, 712 | ITE00100554,18000523,TMIN,188,,,E, 713 | GM000010962,18000523,PRCP,71,,,E, 714 | EZE00100082,18000523,TMAX,270,,,E, 715 | EZE00100082,18000523,TMIN,183,,,E, 716 | ITE00100554,18000524,TMAX,225,,,E, 717 | ITE00100554,18000524,TMIN,185,,,E, 718 | GM000010962,18000524,PRCP,0,,,E, 719 | EZE00100082,18000524,TMAX,282,,,E, 720 | EZE00100082,18000524,TMIN,178,,,E, 721 | ITE00100554,18000525,TMAX,238,,,E, 722 | ITE00100554,18000525,TMIN,181,,,E, 723 | GM000010962,18000525,PRCP,305,,,E, 724 | EZE00100082,18000525,TMAX,232,,,E, 725 | EZE00100082,18000525,TMIN,174,,,E, 726 | ITE00100554,18000526,TMAX,263,,,E, 727 | ITE00100554,18000526,TMIN,198,,,E, 728 | GM000010962,18000526,PRCP,169,,,E, 729 | EZE00100082,18000526,TMAX,226,,,E, 730 | EZE00100082,18000526,TMIN,160,,,E, 731 | ITE00100554,18000527,TMAX,269,,,E, 732 | ITE00100554,18000527,TMIN,210,,,E, 733 | GM000010962,18000527,PRCP,24,,,E, 734 | EZE00100082,18000527,TMAX,246,,,E, 735 | EZE00100082,18000527,TMIN,173,,,E, 736 | ITE00100554,18000528,TMAX,244,,,E, 737 | ITE00100554,18000528,TMIN,191,,,E, 738 | GM000010962,18000528,PRCP,2,,,E, 739 | EZE00100082,18000528,TMAX,261,,,E, 740 | EZE00100082,18000528,TMIN,189,,,E, 741 | ITE00100554,18000529,TMAX,216,,,E, 742 | ITE00100554,18000529,TMIN,191,,,E, 743 | GM000010962,18000529,PRCP,123,,,E, 744 | EZE00100082,18000529,TMAX,258,,,E, 745 | EZE00100082,18000529,TMIN,194,,,E, 746 | ITE00100554,18000530,TMAX,259,,,E, 747 | ITE00100554,18000530,TMIN,196,,,E, 748 | GM000010962,18000530,PRCP,97,,,E, 749 | EZE00100082,18000530,TMAX,238,,,E, 750 | EZE00100082,18000530,TMIN,183,,,E, 751 | ITE00100554,18000531,TMAX,254,,,E, 752 | ITE00100554,18000531,TMIN,196,,,E, 753 | GM000010962,18000531,PRCP,75,,,E, 754 | EZE00100082,18000531,TMAX,210,,,E, 755 | EZE00100082,18000531,TMIN,170,,,E, 756 | ITE00100554,18000601,TMAX,204,,,E, 757 | ITE00100554,18000601,TMIN,191,,,E, 758 | GM000010962,18000601,PRCP,102,,,E, 759 | EZE00100082,18000601,TMAX,191,,,E, 760 | EZE00100082,18000601,TMIN,157,,,E, 761 | ITE00100554,18000602,TMAX,216,,,E, 762 | ITE00100554,18000602,TMIN,138,,,E, 763 | GM000010962,18000602,PRCP,45,,,E, 764 | EZE00100082,18000602,TMAX,193,,,E, 765 | EZE00100082,18000602,TMIN,132,,,E, 766 | ITE00100554,18000603,TMAX,213,,,E, 767 | ITE00100554,18000603,TMIN,138,,,E, 768 | GM000010962,18000603,PRCP,0,,,E, 769 | EZE00100082,18000603,TMAX,192,,,E, 770 | EZE00100082,18000603,TMIN,144,,,E, 771 | ITE00100554,18000604,TMAX,225,,,E, 772 | ITE00100554,18000604,TMIN,156,,,E, 773 | GM000010962,18000604,PRCP,11,,,E, 774 | EZE00100082,18000604,TMAX,216,,,E, 775 | EZE00100082,18000604,TMIN,141,,,E, 776 | ITE00100554,18000605,TMAX,256,,,E, 777 | ITE00100554,18000605,TMIN,173,,,E, 778 | GM000010962,18000605,PRCP,0,,,E, 779 | EZE00100082,18000605,TMAX,226,,,E, 780 | EZE00100082,18000605,TMIN,147,,,E, 781 | ITE00100554,18000606,TMAX,250,,,E, 782 | ITE00100554,18000606,TMIN,184,,,E, 783 | GM000010962,18000606,PRCP,27,,,E, 784 | EZE00100082,18000606,TMAX,227,,,E, 785 | EZE00100082,18000606,TMIN,177,,,E, 786 | ITE00100554,18000607,TMAX,198,,,E, 787 | ITE00100554,18000607,TMIN,173,,,E, 788 | GM000010962,18000607,PRCP,23,,,E, 789 | EZE00100082,18000607,TMAX,219,,,E, 790 | EZE00100082,18000607,TMIN,133,,,E, 791 | ITE00100554,18000608,TMAX,191,,,E, 792 | ITE00100554,18000608,TMIN,169,,,E, 793 | GM000010962,18000608,PRCP,297,,,E, 794 | EZE00100082,18000608,TMAX,164,,,E, 795 | EZE00100082,18000608,TMIN,117,,,E, 796 | ITE00100554,18000609,TMAX,223,,,E, 797 | ITE00100554,18000609,TMIN,166,,,E, 798 | GM000010962,18000609,PRCP,2,,,E, 799 | EZE00100082,18000609,TMAX,191,,,E, 800 | EZE00100082,18000609,TMIN,119,,,E, 801 | ITE00100554,18000610,TMAX,248,,,E, 802 | ITE00100554,18000610,TMIN,166,,,E, 803 | GM000010962,18000610,PRCP,0,,,E, 804 | EZE00100082,18000610,TMAX,191,,,E, 805 | EZE00100082,18000610,TMIN,129,,,E, 806 | ITE00100554,18000611,TMAX,229,,,E, 807 | ITE00100554,18000611,TMIN,169,,,E, 808 | GM000010962,18000611,PRCP,40,,,E, 809 | EZE00100082,18000611,TMAX,185,,,E, 810 | EZE00100082,18000611,TMIN,104,,,E, 811 | ITE00100554,18000612,TMAX,206,,,E, 812 | ITE00100554,18000612,TMIN,175,,,E, 813 | GM000010962,18000612,PRCP,10,,,E, 814 | EZE00100082,18000612,TMAX,190,,,E, 815 | EZE00100082,18000612,TMIN,100,,,E, 816 | ITE00100554,18000613,TMAX,229,,,E, 817 | ITE00100554,18000613,TMIN,171,,,E, 818 | GM000010962,18000613,PRCP,51,,,E, 819 | EZE00100082,18000613,TMAX,198,,,E, 820 | EZE00100082,18000613,TMIN,115,,,E, 821 | ITE00100554,18000614,TMAX,216,,,E, 822 | ITE00100554,18000614,TMIN,166,,,E, 823 | GM000010962,18000614,PRCP,10,,,E, 824 | EZE00100082,18000614,TMAX,212,,,E, 825 | EZE00100082,18000614,TMIN,126,,,E, 826 | ITE00100554,18000615,TMAX,216,,,E, 827 | ITE00100554,18000615,TMIN,141,,,E, 828 | GM000010962,18000615,PRCP,7,,,E, 829 | EZE00100082,18000615,TMAX,148,,,E, 830 | EZE00100082,18000615,TMIN,90,,,E, 831 | ITE00100554,18000616,TMAX,216,,,E, 832 | ITE00100554,18000616,TMIN,141,,,E, 833 | GM000010962,18000616,PRCP,16,,,E, 834 | EZE00100082,18000616,TMAX,139,,,E, 835 | EZE00100082,18000616,TMIN,84,,,E, 836 | ITE00100554,18000617,TMAX,225,,,E, 837 | ITE00100554,18000617,TMIN,141,,,E, 838 | GM000010962,18000617,PRCP,12,,,E, 839 | EZE00100082,18000617,TMAX,131,,,E, 840 | EZE00100082,18000617,TMIN,82,,,E, 841 | ITE00100554,18000618,TMAX,235,,,E, 842 | ITE00100554,18000618,TMIN,146,,,E, 843 | GM000010962,18000618,PRCP,0,,,E, 844 | EZE00100082,18000618,TMAX,140,,,E, 845 | EZE00100082,18000618,TMIN,87,,,E, 846 | ITE00100554,18000619,TMAX,235,,,E, 847 | ITE00100554,18000619,TMIN,148,,,E, 848 | GM000010962,18000619,PRCP,63,,,E, 849 | EZE00100082,18000619,TMAX,164,,,E, 850 | EZE00100082,18000619,TMIN,98,,,E, 851 | ITE00100554,18000620,TMAX,254,,,E, 852 | ITE00100554,18000620,TMIN,146,,,E, 853 | GM000010962,18000620,PRCP,17,,,E, 854 | EZE00100082,18000620,TMAX,210,,,E, 855 | EZE00100082,18000620,TMIN,88,,,E, 856 | ITE00100554,18000621,TMAX,259,,,E, 857 | ITE00100554,18000621,TMIN,173,,,E, 858 | GM000010962,18000621,PRCP,2,,,E, 859 | EZE00100082,18000621,TMAX,195,,,E, 860 | EZE00100082,18000621,TMIN,156,,,E, 861 | ITE00100554,18000622,TMAX,213,,,E, 862 | ITE00100554,18000622,TMIN,204,,,E, 863 | GM000010962,18000622,PRCP,111,,,E, 864 | EZE00100082,18000622,TMAX,192,,,E, 865 | EZE00100082,18000622,TMIN,134,,,E, 866 | ITE00100554,18000623,TMAX,241,,,E, 867 | ITE00100554,18000623,TMIN,154,,,E, 868 | GM000010962,18000623,PRCP,27,,,E, 869 | EZE00100082,18000623,TMAX,182,,,E, 870 | EZE00100082,18000623,TMIN,118,,,E, 871 | ITE00100554,18000624,TMAX,241,,,E, 872 | ITE00100554,18000624,TMIN,179,,,E, 873 | GM000010962,18000624,PRCP,0,,,E, 874 | EZE00100082,18000624,TMAX,194,,,E, 875 | EZE00100082,18000624,TMIN,115,,,E, 876 | ITE00100554,18000625,TMAX,254,,,E, 877 | ITE00100554,18000625,TMIN,184,,,E, 878 | GM000010962,18000625,PRCP,0,,,E, 879 | EZE00100082,18000625,TMAX,217,,,E, 880 | EZE00100082,18000625,TMIN,100,,,E, 881 | ITE00100554,18000626,TMAX,263,,,E, 882 | ITE00100554,18000626,TMIN,184,,,E, 883 | GM000010962,18000626,PRCP,0,,,E, 884 | EZE00100082,18000626,TMAX,233,,,E, 885 | EZE00100082,18000626,TMIN,131,,,E, 886 | ITE00100554,18000627,TMAX,275,,,E, 887 | ITE00100554,18000627,TMIN,204,,,E, 888 | GM000010962,18000627,PRCP,0,,,E, 889 | EZE00100082,18000627,TMAX,234,,,E, 890 | EZE00100082,18000627,TMIN,161,,,E, 891 | ITE00100554,18000628,TMAX,288,,,E, 892 | ITE00100554,18000628,TMIN,213,,,E, 893 | GM000010962,18000628,PRCP,12,,,E, 894 | EZE00100082,18000628,TMAX,227,,,E, 895 | EZE00100082,18000628,TMIN,140,,,E, 896 | ITE00100554,18000629,TMAX,265,,,E, 897 | ITE00100554,18000629,TMIN,198,,,E, 898 | GM000010962,18000629,PRCP,0,,,E, 899 | EZE00100082,18000629,TMAX,250,,,E, 900 | EZE00100082,18000629,TMIN,137,,,E, 901 | ITE00100554,18000630,TMAX,279,,,E, 902 | ITE00100554,18000630,TMIN,209,,,E, 903 | GM000010962,18000630,PRCP,88,,,E, 904 | EZE00100082,18000630,TMAX,214,,,E, 905 | EZE00100082,18000630,TMIN,155,,,E, 906 | ITE00100554,18000701,TMAX,275,,,E, 907 | ITE00100554,18000701,TMIN,213,,,E, 908 | GM000010962,18000701,PRCP,32,,,E, 909 | EZE00100082,18000701,TMAX,180,,,E, 910 | EZE00100082,18000701,TMIN,128,,,E, 911 | ITE00100554,18000702,TMAX,241,,,E, 912 | ITE00100554,18000702,TMIN,185,,,E, 913 | GM000010962,18000702,PRCP,0,,,E, 914 | EZE00100082,18000702,TMAX,193,,,E, 915 | EZE00100082,18000702,TMIN,135,,,E, 916 | ITE00100554,18000703,TMAX,254,,,E, 917 | ITE00100554,18000703,TMIN,200,,,E, 918 | GM000010962,18000703,PRCP,0,,,E, 919 | EZE00100082,18000703,TMAX,240,,,E, 920 | EZE00100082,18000703,TMIN,134,,,E, 921 | ITE00100554,18000704,TMAX,288,,,E, 922 | ITE00100554,18000704,TMIN,200,,,E, 923 | GM000010962,18000704,PRCP,33,,,E, 924 | EZE00100082,18000704,TMAX,216,,,E, 925 | EZE00100082,18000704,TMIN,144,,,E, 926 | ITE00100554,18000705,TMAX,275,,,E, 927 | ITE00100554,18000705,TMIN,219,,,E, 928 | GM000010962,18000705,PRCP,0,,,E, 929 | EZE00100082,18000705,TMAX,281,,,E, 930 | EZE00100082,18000705,TMIN,147,,,E, 931 | ITE00100554,18000706,TMAX,288,,,E, 932 | ITE00100554,18000706,TMIN,213,,,E, 933 | GM000010962,18000706,PRCP,0,,,E, 934 | EZE00100082,18000706,TMAX,285,,,E, 935 | EZE00100082,18000706,TMIN,188,,,E, 936 | ITE00100554,18000707,TMAX,278,,,E, 937 | ITE00100554,18000707,TMIN,221,,,E, 938 | GM000010962,18000707,PRCP,0,,,E, 939 | EZE00100082,18000707,TMAX,286,,,E, 940 | EZE00100082,18000707,TMIN,180,,,E, 941 | ITE00100554,18000708,TMAX,300,,,E, 942 | ITE00100554,18000708,TMIN,209,,,E, 943 | GM000010962,18000708,PRCP,43,,,E, 944 | EZE00100082,18000708,TMAX,293,,,E, 945 | EZE00100082,18000708,TMIN,180,,,E, 946 | ITE00100554,18000709,TMAX,304,,,E, 947 | ITE00100554,18000709,TMIN,225,,,E, 948 | GM000010962,18000709,PRCP,0,,,E, 949 | EZE00100082,18000709,TMAX,306,,,E, 950 | EZE00100082,18000709,TMIN,204,,,E, 951 | ITE00100554,18000710,TMAX,319,,,E, 952 | ITE00100554,18000710,TMIN,235,,,E, 953 | GM000010962,18000710,PRCP,117,,,E, 954 | EZE00100082,18000710,TMAX,290,,,E, 955 | EZE00100082,18000710,TMIN,195,,,E, 956 | ITE00100554,18000711,TMAX,304,,,E, 957 | ITE00100554,18000711,TMIN,238,,,E, 958 | GM000010962,18000711,PRCP,86,,,E, 959 | EZE00100082,18000711,TMAX,195,,,E, 960 | EZE00100082,18000711,TMIN,159,,,E, 961 | ITE00100554,18000712,TMAX,285,,,E, 962 | ITE00100554,18000712,TMIN,241,,,E, 963 | GM000010962,18000712,PRCP,0,,,E, 964 | EZE00100082,18000712,TMAX,244,,,E, 965 | EZE00100082,18000712,TMIN,160,,,E, 966 | ITE00100554,18000713,TMAX,300,,,E, 967 | ITE00100554,18000713,TMIN,231,,,E, 968 | GM000010962,18000713,PRCP,0,,,E, 969 | EZE00100082,18000713,TMAX,217,,,E, 970 | EZE00100082,18000713,TMIN,172,,,E, 971 | ITE00100554,18000714,TMAX,300,,,E, 972 | ITE00100554,18000714,TMIN,225,,,E, 973 | GM000010962,18000714,PRCP,0,,,E, 974 | EZE00100082,18000714,TMAX,186,,,E, 975 | EZE00100082,18000714,TMIN,144,,,E, 976 | ITE00100554,18000715,TMAX,266,,,E, 977 | ITE00100554,18000715,TMIN,225,,,E, 978 | GM000010962,18000715,PRCP,2,,,E, 979 | EZE00100082,18000715,TMAX,192,,,E, 980 | EZE00100082,18000715,TMIN,124,,,E, 981 | ITE00100554,18000716,TMAX,248,,,E, 982 | ITE00100554,18000716,TMIN,204,,,E, 983 | GM000010962,18000716,PRCP,0,,,E, 984 | EZE00100082,18000716,TMAX,185,,,E, 985 | EZE00100082,18000716,TMIN,133,,,E, 986 | ITE00100554,18000717,TMAX,275,,,E, 987 | ITE00100554,18000717,TMIN,209,,,E, 988 | GM000010962,18000717,PRCP,0,,,E, 989 | EZE00100082,18000717,TMAX,204,,,E, 990 | EZE00100082,18000717,TMIN,140,,,E, 991 | ITE00100554,18000718,TMAX,294,,,E, 992 | ITE00100554,18000718,TMIN,213,,,E, 993 | GM000010962,18000718,PRCP,0,,,E, 994 | EZE00100082,18000718,TMAX,193,,,E, 995 | EZE00100082,18000718,TMIN,142,,,E, 996 | ITE00100554,18000719,TMAX,284,,,E, 997 | ITE00100554,18000719,TMIN,225,,,E, 998 | GM000010962,18000719,PRCP,0,,,E, 999 | EZE00100082,18000719,TMAX,200,,,E, 1000 | EZE00100082,18000719,TMIN,136,,,E, 1001 | ITE00100554,18000720,TMAX,263,,,E, 1002 | ITE00100554,18000720,TMIN,191,,,E, 1003 | GM000010962,18000720,PRCP,0,,,E, 1004 | EZE00100082,18000720,TMAX,204,,,E, 1005 | EZE00100082,18000720,TMIN,132,,,E, 1006 | ITE00100554,18000721,TMAX,285,,,E, 1007 | ITE00100554,18000721,TMIN,191,,,E, 1008 | GM000010962,18000721,PRCP,2,,,E, 1009 | EZE00100082,18000721,TMAX,170,,,E, 1010 | EZE00100082,18000721,TMIN,124,,,E, 1011 | ITE00100554,18000722,TMAX,266,,,E, 1012 | ITE00100554,18000722,TMIN,213,,,E, 1013 | GM000010962,18000722,PRCP,80,,,E, 1014 | EZE00100082,18000722,TMAX,178,,,E, 1015 | EZE00100082,18000722,TMIN,130,,,E, 1016 | ITE00100554,18000723,TMAX,250,,,E, 1017 | ITE00100554,18000723,TMIN,163,,,E, 1018 | GM000010962,18000723,PRCP,40,,,E, 1019 | EZE00100082,18000723,TMAX,190,,,E, 1020 | EZE00100082,18000723,TMIN,143,,,E, 1021 | ITE00100554,18000724,TMAX,254,,,E, 1022 | ITE00100554,18000724,TMIN,171,,,E, 1023 | GM000010962,18000724,PRCP,11,,,E, 1024 | EZE00100082,18000724,TMAX,213,,,E, 1025 | EZE00100082,18000724,TMIN,155,,,E, 1026 | ITE00100554,18000725,TMAX,269,,,E, 1027 | ITE00100554,18000725,TMIN,191,,,E, 1028 | GM000010962,18000725,PRCP,0,,,E, 1029 | EZE00100082,18000725,TMAX,238,,,E, 1030 | EZE00100082,18000725,TMIN,152,,,E, 1031 | ITE00100554,18000726,TMAX,281,,,E, 1032 | ITE00100554,18000726,TMIN,191,,,E, 1033 | GM000010962,18000726,PRCP,0,,,E, 1034 | EZE00100082,18000726,TMAX,220,,,E, 1035 | EZE00100082,18000726,TMIN,144,,,E, 1036 | ITE00100554,18000727,TMAX,271,,,E, 1037 | ITE00100554,18000727,TMIN,206,,,E, 1038 | GM000010962,18000727,PRCP,0,,,E, 1039 | EZE00100082,18000727,TMAX,222,,,E, 1040 | EZE00100082,18000727,TMIN,169,,,E, 1041 | ITE00100554,18000728,TMAX,269,,,E, 1042 | ITE00100554,18000728,TMIN,216,,,E, 1043 | GM000010962,18000728,PRCP,0,,,E, 1044 | EZE00100082,18000728,TMAX,233,,,E, 1045 | EZE00100082,18000728,TMIN,144,,,E, 1046 | ITE00100554,18000729,TMAX,241,,,E, 1047 | ITE00100554,18000729,TMIN,200,,,E, 1048 | GM000010962,18000729,PRCP,0,,,E, 1049 | EZE00100082,18000729,TMAX,230,,,E, 1050 | EZE00100082,18000729,TMIN,150,,,E, 1051 | ITE00100554,18000730,TMAX,241,,,E, 1052 | ITE00100554,18000730,TMIN,200,,,E, 1053 | GM000010962,18000730,PRCP,0,,,E, 1054 | EZE00100082,18000730,TMAX,230,,,E, 1055 | EZE00100082,18000730,TMIN,120,,,E, 1056 | ITE00100554,18000731,TMAX,271,,,E, 1057 | ITE00100554,18000731,TMIN,188,,,E, 1058 | GM000010962,18000731,PRCP,0,,,E, 1059 | EZE00100082,18000731,TMAX,227,,,E, 1060 | EZE00100082,18000731,TMIN,137,,,E, 1061 | ITE00100554,18000801,TMAX,250,,,E, 1062 | ITE00100554,18000801,TMIN,200,,,E, 1063 | GM000010962,18000801,PRCP,0,,,E, 1064 | EZE00100082,18000801,TMAX,242,,,E, 1065 | EZE00100082,18000801,TMIN,140,,,E, 1066 | ITE00100554,18000802,TMAX,263,,,E, 1067 | ITE00100554,18000802,TMIN,188,,,E, 1068 | GM000010962,18000802,PRCP,0,,,E, 1069 | EZE00100082,18000802,TMAX,250,,,E, 1070 | EZE00100082,18000802,TMIN,154,,,E, 1071 | ITE00100554,18000803,TMAX,275,,,E, 1072 | ITE00100554,18000803,TMIN,200,,,E, 1073 | GM000010962,18000803,PRCP,0,,,E, 1074 | EZE00100082,18000803,TMAX,281,,,E, 1075 | EZE00100082,18000803,TMIN,183,,,E, 1076 | ITE00100554,18000804,TMAX,288,,,E, 1077 | ITE00100554,18000804,TMIN,200,,,E, 1078 | GM000010962,18000804,PRCP,0,,,E, 1079 | EZE00100082,18000804,TMAX,316,,,E, 1080 | EZE00100082,18000804,TMIN,192,,,E, 1081 | ITE00100554,18000805,TMAX,309,,,E, 1082 | ITE00100554,18000805,TMIN,210,,,E, 1083 | GM000010962,18000805,PRCP,0,,,E, 1084 | EZE00100082,18000805,TMAX,248,,,E, 1085 | EZE00100082,18000805,TMIN,168,,,E, 1086 | ITE00100554,18000806,TMAX,288,,,E, 1087 | ITE00100554,18000806,TMIN,213,,,E, 1088 | GM000010962,18000806,PRCP,0,,,E, 1089 | EZE00100082,18000806,TMAX,216,,,E, 1090 | EZE00100082,18000806,TMIN,138,,,E, 1091 | ITE00100554,18000807,TMAX,298,,,E, 1092 | ITE00100554,18000807,TMIN,200,,,E, 1093 | GM000010962,18000807,PRCP,0,,,E, 1094 | EZE00100082,18000807,TMAX,210,,,E, 1095 | EZE00100082,18000807,TMIN,141,,,E, 1096 | ITE00100554,18000808,TMAX,223,,,E, 1097 | ITE00100554,18000808,TMIN,143,,,E, 1098 | GM000010962,18000808,PRCP,0,,,E, 1099 | EZE00100082,18000808,TMAX,193,,,E, 1100 | EZE00100082,18000808,TMIN,136,,,E, 1101 | ITE00100554,18000809,TMAX,240,,,E, 1102 | ITE00100554,18000809,TMIN,144,,,E, 1103 | GM000010962,18000809,PRCP,9,,,E, 1104 | EZE00100082,18000809,TMAX,214,,,E, 1105 | EZE00100082,18000809,TMIN,117,,,E, 1106 | ITE00100554,18000810,TMAX,246,,,E, 1107 | ITE00100554,18000810,TMIN,159,,,E, 1108 | GM000010962,18000810,PRCP,0,,,E, 1109 | EZE00100082,18000810,TMAX,251,,,E, 1110 | EZE00100082,18000810,TMIN,155,,,E, 1111 | ITE00100554,18000811,TMAX,271,,,E, 1112 | ITE00100554,18000811,TMIN,166,,,E, 1113 | GM000010962,18000811,PRCP,0,,,E, 1114 | EZE00100082,18000811,TMAX,246,,,E, 1115 | EZE00100082,18000811,TMIN,155,,,E, 1116 | ITE00100554,18000812,TMAX,259,,,E, 1117 | ITE00100554,18000812,TMIN,184,,,E, 1118 | GM000010962,18000812,PRCP,0,,,E, 1119 | EZE00100082,18000812,TMAX,262,,,E, 1120 | EZE00100082,18000812,TMIN,162,,,E, 1121 | ITE00100554,18000813,TMAX,281,,,E, 1122 | ITE00100554,18000813,TMIN,204,,,E, 1123 | GM000010962,18000813,PRCP,0,,,E, 1124 | EZE00100082,18000813,TMAX,287,,,E, 1125 | EZE00100082,18000813,TMIN,165,,,E, 1126 | ITE00100554,18000814,TMAX,284,,,E, 1127 | ITE00100554,18000814,TMIN,221,,,E, 1128 | GM000010962,18000814,PRCP,0,,,E, 1129 | EZE00100082,18000814,TMAX,306,,,E, 1130 | EZE00100082,18000814,TMIN,180,,,E, 1131 | ITE00100554,18000815,TMAX,298,,,E, 1132 | ITE00100554,18000815,TMIN,216,,,E, 1133 | GM000010962,18000815,PRCP,0,,,E, 1134 | EZE00100082,18000815,TMAX,307,,,E, 1135 | EZE00100082,18000815,TMIN,181,,,E, 1136 | ITE00100554,18000816,TMAX,304,,,E, 1137 | ITE00100554,18000816,TMIN,216,,,E, 1138 | GM000010962,18000816,PRCP,0,,,E, 1139 | EZE00100082,18000816,TMAX,304,,,E, 1140 | EZE00100082,18000816,TMIN,198,,,E, 1141 | ITE00100554,18000817,TMAX,309,,,E, 1142 | ITE00100554,18000817,TMIN,216,,,E, 1143 | GM000010962,18000817,PRCP,0,,,E, 1144 | EZE00100082,18000817,TMAX,275,,,E, 1145 | EZE00100082,18000817,TMIN,178,,,E, 1146 | ITE00100554,18000818,TMAX,313,,,E, 1147 | ITE00100554,18000818,TMIN,221,,,E, 1148 | GM000010962,18000818,PRCP,0,,,E, 1149 | EZE00100082,18000818,TMAX,323,,,E, 1150 | EZE00100082,18000818,TMIN,185,,,E, 1151 | ITE00100554,18000819,TMAX,323,,,E, 1152 | ITE00100554,18000819,TMIN,238,,,E, 1153 | GM000010962,18000819,PRCP,0,,,E, 1154 | EZE00100082,18000819,TMAX,290,,,E, 1155 | EZE00100082,18000819,TMIN,195,,,E, 1156 | ITE00100554,18000820,TMAX,310,,,E, 1157 | ITE00100554,18000820,TMIN,235,,,E, 1158 | GM000010962,18000820,PRCP,0,,,E, 1159 | EZE00100082,18000820,TMAX,274,,,E, 1160 | EZE00100082,18000820,TMIN,202,,,E, 1161 | ITE00100554,18000821,TMAX,298,,,E, 1162 | ITE00100554,18000821,TMIN,231,,,E, 1163 | GM000010962,18000821,PRCP,36,,,E, 1164 | EZE00100082,18000821,TMAX,253,,,E, 1165 | EZE00100082,18000821,TMIN,195,,,E, 1166 | ITE00100554,18000822,TMAX,279,,,E, 1167 | ITE00100554,18000822,TMIN,209,,,E, 1168 | GM000010962,18000822,PRCP,195,,,E, 1169 | EZE00100082,18000822,TMAX,206,,,E, 1170 | EZE00100082,18000822,TMIN,158,,,E, 1171 | ITE00100554,18000823,TMAX,213,,,E, 1172 | ITE00100554,18000823,TMIN,204,,,E, 1173 | GM000010962,18000823,PRCP,0,,,E, 1174 | EZE00100082,18000823,TMAX,231,,,E, 1175 | EZE00100082,18000823,TMIN,119,,,E, 1176 | ITE00100554,18000824,TMAX,229,,,E, 1177 | ITE00100554,18000824,TMIN,148,,,E, 1178 | GM000010962,18000824,PRCP,33,,,E, 1179 | EZE00100082,18000824,TMAX,213,,,E, 1180 | EZE00100082,18000824,TMIN,154,,,E, 1181 | ITE00100554,18000825,TMAX,241,,,E, 1182 | ITE00100554,18000825,TMIN,171,,,E, 1183 | GM000010962,18000825,PRCP,0,,,E, 1184 | EZE00100082,18000825,TMAX,200,,,E, 1185 | EZE00100082,18000825,TMIN,133,,,E, 1186 | ITE00100554,18000826,TMAX,210,,,E, 1187 | ITE00100554,18000826,TMIN,159,,,E, 1188 | GM000010962,18000826,PRCP,51,,,E, 1189 | EZE00100082,18000826,TMAX,215,,,E, 1190 | EZE00100082,18000826,TMIN,151,,,E, 1191 | ITE00100554,18000827,TMAX,234,,,E, 1192 | ITE00100554,18000827,TMIN,146,,,E, 1193 | GM000010962,18000827,PRCP,268,,,E, 1194 | EZE00100082,18000827,TMAX,220,,,E, 1195 | EZE00100082,18000827,TMIN,148,,,E, 1196 | ITE00100554,18000828,TMAX,234,,,E, 1197 | ITE00100554,18000828,TMIN,154,,,E, 1198 | GM000010962,18000828,PRCP,0,,,E, 1199 | EZE00100082,18000828,TMAX,203,,,E, 1200 | EZE00100082,18000828,TMIN,158,,,E, 1201 | ITE00100554,18000829,TMAX,241,,,E, 1202 | ITE00100554,18000829,TMIN,179,,,E, 1203 | GM000010962,18000829,PRCP,0,,,E, 1204 | EZE00100082,18000829,TMAX,203,,,E, 1205 | EZE00100082,18000829,TMIN,149,,,E, 1206 | ITE00100554,18000830,TMAX,241,,,E, 1207 | ITE00100554,18000830,TMIN,163,,,E, 1208 | GM000010962,18000830,PRCP,40,,,E, 1209 | EZE00100082,18000830,TMAX,196,,,E, 1210 | EZE00100082,18000830,TMIN,154,,,E, 1211 | ITE00100554,18000831,TMAX,240,,,E, 1212 | ITE00100554,18000831,TMIN,165,,,E, 1213 | GM000010962,18000831,PRCP,50,,,E, 1214 | EZE00100082,18000831,TMAX,177,,,E, 1215 | EZE00100082,18000831,TMIN,147,,,E, 1216 | ITE00100554,18000901,TMAX,241,,,E, 1217 | ITE00100554,18000901,TMIN,184,,,E, 1218 | GM000010962,18000901,PRCP,31,,,E, 1219 | EZE00100082,18000901,TMAX,193,,,E, 1220 | EZE00100082,18000901,TMIN,148,,,E, 1221 | ITE00100554,18000902,TMAX,179,,,E, 1222 | ITE00100554,18000902,TMIN,179,,,E, 1223 | GM000010962,18000902,PRCP,0,,,E, 1224 | EZE00100082,18000902,TMAX,209,,,E, 1225 | EZE00100082,18000902,TMIN,152,,,E, 1226 | ITE00100554,18000903,TMAX,216,,,E, 1227 | ITE00100554,18000903,TMIN,166,,,E, 1228 | GM000010962,18000903,PRCP,2,,,E, 1229 | EZE00100082,18000903,TMAX,197,,,E, 1230 | EZE00100082,18000903,TMIN,157,,,E, 1231 | ITE00100554,18000904,TMAX,229,,,E, 1232 | ITE00100554,18000904,TMIN,166,,,E, 1233 | GM000010962,18000904,PRCP,2,,,E, 1234 | EZE00100082,18000904,TMAX,214,,,E, 1235 | EZE00100082,18000904,TMIN,141,,,E, 1236 | ITE00100554,18000905,TMAX,238,,,E, 1237 | ITE00100554,18000905,TMIN,191,,,E, 1238 | GM000010962,18000905,PRCP,0,,,E, 1239 | EZE00100082,18000905,TMAX,210,,,E, 1240 | EZE00100082,18000905,TMIN,154,,,E, 1241 | ITE00100554,18000906,TMAX,238,,,E, 1242 | ITE00100554,18000906,TMIN,179,,,E, 1243 | GM000010962,18000906,PRCP,20,,,E, 1244 | EZE00100082,18000906,TMAX,225,,,E, 1245 | EZE00100082,18000906,TMIN,173,,,E, 1246 | ITE00100554,18000907,TMAX,223,,,E, 1247 | ITE00100554,18000907,TMIN,178,,,E, 1248 | GM000010962,18000907,PRCP,0,,,E, 1249 | EZE00100082,18000907,TMAX,230,,,E, 1250 | EZE00100082,18000907,TMIN,146,,,E, 1251 | ITE00100554,18000908,TMAX,238,,,E, 1252 | ITE00100554,18000908,TMIN,175,,,E, 1253 | GM000010962,18000908,PRCP,56,,,E, 1254 | EZE00100082,18000908,TMAX,227,,,E, 1255 | EZE00100082,18000908,TMIN,184,,,E, 1256 | ITE00100554,18000909,TMAX,250,,,E, 1257 | ITE00100554,18000909,TMIN,188,,,E, 1258 | GM000010962,18000909,PRCP,11,,,E, 1259 | EZE00100082,18000909,TMAX,194,,,E, 1260 | EZE00100082,18000909,TMIN,163,,,E, 1261 | ITE00100554,18000910,TMAX,238,,,E, 1262 | ITE00100554,18000910,TMIN,188,,,E, 1263 | GM000010962,18000910,PRCP,0,,,E, 1264 | EZE00100082,18000910,TMAX,202,,,E, 1265 | EZE00100082,18000910,TMIN,152,,,E, 1266 | ITE00100554,18000911,TMAX,248,,,E, 1267 | ITE00100554,18000911,TMIN,163,,,E, 1268 | GM000010962,18000911,PRCP,110,,,E, 1269 | EZE00100082,18000911,TMAX,181,,,E, 1270 | EZE00100082,18000911,TMIN,157,,,E, 1271 | ITE00100554,18000912,TMAX,238,,,E, 1272 | ITE00100554,18000912,TMIN,163,,,E, 1273 | GM000010962,18000912,PRCP,1,,,E, 1274 | EZE00100082,18000912,TMAX,186,,,E, 1275 | EZE00100082,18000912,TMIN,141,,,E, 1276 | ITE00100554,18000913,TMAX,241,,,E, 1277 | ITE00100554,18000913,TMIN,154,,,E, 1278 | GM000010962,18000913,PRCP,0,,,E, 1279 | EZE00100082,18000913,TMAX,177,,,E, 1280 | EZE00100082,18000913,TMIN,116,,,E, 1281 | ITE00100554,18000914,TMAX,229,,,E, 1282 | ITE00100554,18000914,TMIN,166,,,E, 1283 | GM000010962,18000914,PRCP,0,,,E, 1284 | EZE00100082,18000914,TMAX,183,,,E, 1285 | EZE00100082,18000914,TMIN,104,,,E, 1286 | ITE00100554,18000915,TMAX,225,,,E, 1287 | ITE00100554,18000915,TMIN,159,,,E, 1288 | GM000010962,18000915,PRCP,0,,,E, 1289 | EZE00100082,18000915,TMAX,198,,,E, 1290 | EZE00100082,18000915,TMIN,115,,,E, 1291 | ITE00100554,18000916,TMAX,229,,,E, 1292 | ITE00100554,18000916,TMIN,154,,,E, 1293 | GM000010962,18000916,PRCP,0,,,E, 1294 | EZE00100082,18000916,TMAX,205,,,E, 1295 | EZE00100082,18000916,TMIN,111,,,E, 1296 | ITE00100554,18000917,TMAX,235,,,E, 1297 | ITE00100554,18000917,TMIN,163,,,E, 1298 | GM000010962,18000917,PRCP,0,,,E, 1299 | EZE00100082,18000917,TMAX,199,,,E, 1300 | EZE00100082,18000917,TMIN,110,,,E, 1301 | ITE00100554,18000918,TMAX,246,,,E, 1302 | ITE00100554,18000918,TMIN,175,,,E, 1303 | GM000010962,18000918,PRCP,4,,,E, 1304 | EZE00100082,18000918,TMAX,217,,,E, 1305 | EZE00100082,18000918,TMIN,118,,,E, 1306 | ITE00100554,18000919,TMAX,241,,,E, 1307 | ITE00100554,18000919,TMIN,184,,,E, 1308 | GM000010962,18000919,PRCP,0,,,E, 1309 | EZE00100082,18000919,TMAX,217,,,E, 1310 | EZE00100082,18000919,TMIN,165,,,E, 1311 | ITE00100554,18000920,TMAX,225,,,E, 1312 | ITE00100554,18000920,TMIN,191,,,E, 1313 | GM000010962,18000920,PRCP,2,,,E, 1314 | EZE00100082,18000920,TMAX,210,,,E, 1315 | EZE00100082,18000920,TMIN,142,,,E, 1316 | ITE00100554,18000921,TMAX,231,,,E, 1317 | ITE00100554,18000921,TMIN,191,,,E, 1318 | GM000010962,18000921,PRCP,85,,,E, 1319 | EZE00100082,18000921,TMAX,193,,,E, 1320 | EZE00100082,18000921,TMIN,155,,,E, 1321 | ITE00100554,18000922,TMAX,235,,,E, 1322 | ITE00100554,18000922,TMIN,185,,,E, 1323 | GM000010962,18000922,PRCP,33,,,E, 1324 | EZE00100082,18000922,TMAX,169,,,E, 1325 | EZE00100082,18000922,TMIN,136,,,E, 1326 | ITE00100554,18000923,TMAX,234,,,E, 1327 | ITE00100554,18000923,TMIN,163,,,E, 1328 | GM000010962,18000923,PRCP,14,,,E, 1329 | EZE00100082,18000923,TMAX,170,,,E, 1330 | EZE00100082,18000923,TMIN,131,,,E, 1331 | ITE00100554,18000924,TMAX,234,,,E, 1332 | ITE00100554,18000924,TMIN,169,,,E, 1333 | GM000010962,18000924,PRCP,49,,,E, 1334 | EZE00100082,18000924,TMAX,164,,,E, 1335 | EZE00100082,18000924,TMIN,132,,,E, 1336 | ITE00100554,18000925,TMAX,238,,,E, 1337 | ITE00100554,18000925,TMIN,171,,,E, 1338 | GM000010962,18000925,PRCP,30,,,E, 1339 | EZE00100082,18000925,TMAX,156,,,E, 1340 | EZE00100082,18000925,TMIN,125,,,E, 1341 | ITE00100554,18000926,TMAX,198,,,E, 1342 | ITE00100554,18000926,TMIN,181,,,E, 1343 | GM000010962,18000926,PRCP,10,,,E, 1344 | EZE00100082,18000926,TMAX,144,,,E, 1345 | EZE00100082,18000926,TMIN,115,,,E, 1346 | ITE00100554,18000927,TMAX,213,,,E, 1347 | ITE00100554,18000927,TMIN,129,,,E, 1348 | GM000010962,18000927,PRCP,11,,,E, 1349 | EZE00100082,18000927,TMAX,134,,,E, 1350 | EZE00100082,18000927,TMIN,116,,,E, 1351 | ITE00100554,18000928,TMAX,213,,,E, 1352 | ITE00100554,18000928,TMIN,181,,,E, 1353 | GM000010962,18000928,PRCP,14,,,E, 1354 | EZE00100082,18000928,TMAX,158,,,E, 1355 | EZE00100082,18000928,TMIN,114,,,E, 1356 | ITE00100554,18000929,TMAX,196,,,E, 1357 | ITE00100554,18000929,TMIN,119,,,E, 1358 | GM000010962,18000929,PRCP,13,,,E, 1359 | EZE00100082,18000929,TMAX,131,,,E, 1360 | EZE00100082,18000929,TMIN,91,,,E, 1361 | ITE00100554,18000930,TMAX,200,,,E, 1362 | ITE00100554,18000930,TMIN,100,,,E, 1363 | GM000010962,18000930,PRCP,0,,,E, 1364 | EZE00100082,18000930,TMAX,157,,,E, 1365 | EZE00100082,18000930,TMIN,85,,,E, 1366 | ITE00100554,18001001,TMAX,188,,,E, 1367 | ITE00100554,18001001,TMIN,129,,,E, 1368 | GM000010962,18001001,PRCP,45,,,E, 1369 | EZE00100082,18001001,TMAX,133,,,E, 1370 | EZE00100082,18001001,TMIN,110,,,E, 1371 | ITE00100554,18001002,TMAX,194,,,E, 1372 | ITE00100554,18001002,TMIN,144,,,E, 1373 | GM000010962,18001002,PRCP,127,,,E, 1374 | EZE00100082,18001002,TMAX,135,,,E, 1375 | EZE00100082,18001002,TMIN,98,,,E, 1376 | ITE00100554,18001003,TMAX,200,,,E, 1377 | ITE00100554,18001003,TMIN,144,,,E, 1378 | GM000010962,18001003,PRCP,149,,,E, 1379 | EZE00100082,18001003,TMAX,164,,,E, 1380 | EZE00100082,18001003,TMIN,94,,,E, 1381 | ITE00100554,18001004,TMAX,200,,,E, 1382 | ITE00100554,18001004,TMIN,163,,,E, 1383 | GM000010962,18001004,PRCP,48,,,E, 1384 | EZE00100082,18001004,TMAX,136,,,E, 1385 | EZE00100082,18001004,TMIN,109,,,E, 1386 | ITE00100554,18001005,TMAX,185,,,E, 1387 | ITE00100554,18001005,TMIN,141,,,E, 1388 | GM000010962,18001005,PRCP,0,,,E, 1389 | EZE00100082,18001005,TMAX,150,,,E, 1390 | EZE00100082,18001005,TMIN,95,,,E, 1391 | ITE00100554,18001006,TMAX,181,,,E, 1392 | ITE00100554,18001006,TMIN,150,,,E, 1393 | GM000010962,18001006,PRCP,0,,,E, 1394 | EZE00100082,18001006,TMAX,149,,,E, 1395 | EZE00100082,18001006,TMIN,76,,,E, 1396 | ITE00100554,18001007,TMAX,169,,,E, 1397 | ITE00100554,18001007,TMIN,154,,,E, 1398 | GM000010962,18001007,PRCP,0,,,E, 1399 | EZE00100082,18001007,TMAX,163,,,E, 1400 | EZE00100082,18001007,TMIN,98,,,E, 1401 | ITE00100554,18001008,TMAX,184,,,E, 1402 | ITE00100554,18001008,TMIN,165,,,E, 1403 | GM000010962,18001008,PRCP,0,,,E, 1404 | EZE00100082,18001008,TMAX,165,,,E, 1405 | EZE00100082,18001008,TMIN,104,,,E, 1406 | ITE00100554,18001009,TMAX,184,,,E, 1407 | ITE00100554,18001009,TMIN,166,,,E, 1408 | GM000010962,18001009,PRCP,49,,,E, 1409 | EZE00100082,18001009,TMAX,174,,,E, 1410 | EZE00100082,18001009,TMIN,120,,,E, 1411 | ITE00100554,18001010,TMAX,181,,,E, 1412 | ITE00100554,18001010,TMIN,150,,,E, 1413 | GM000010962,18001010,PRCP,32,,,E, 1414 | EZE00100082,18001010,TMAX,169,,,E, 1415 | EZE00100082,18001010,TMIN,125,,,E, 1416 | ITE00100554,18001011,TMAX,188,,,E, 1417 | ITE00100554,18001011,TMIN,150,,,E, 1418 | GM000010962,18001011,PRCP,32,,,E, 1419 | EZE00100082,18001011,TMAX,136,,,E, 1420 | EZE00100082,18001011,TMIN,97,,,E, 1421 | ITE00100554,18001012,TMAX,175,,,E, 1422 | ITE00100554,18001012,TMIN,123,,,E, 1423 | GM000010962,18001012,PRCP,0,,,E, 1424 | EZE00100082,18001012,TMAX,147,,,E, 1425 | EZE00100082,18001012,TMIN,99,,,E, 1426 | ITE00100554,18001013,TMAX,175,,,E, 1427 | ITE00100554,18001013,TMIN,113,,,E, 1428 | GM000010962,18001013,PRCP,11,,,E, 1429 | EZE00100082,18001013,TMAX,127,,,E, 1430 | EZE00100082,18001013,TMIN,98,,,E, 1431 | ITE00100554,18001014,TMAX,171,,,E, 1432 | ITE00100554,18001014,TMIN,100,,,E, 1433 | GM000010962,18001014,PRCP,0,,,E, 1434 | EZE00100082,18001014,TMAX,135,,,E, 1435 | EZE00100082,18001014,TMIN,93,,,E, 1436 | ITE00100554,18001015,TMAX,171,,,E, 1437 | ITE00100554,18001015,TMIN,96,,,E, 1438 | GM000010962,18001015,PRCP,0,,,E, 1439 | EZE00100082,18001015,TMAX,124,,,E, 1440 | EZE00100082,18001015,TMIN,97,,,E, 1441 | ITE00100554,18001016,TMAX,166,,,E, 1442 | ITE00100554,18001016,TMIN,109,,,E, 1443 | GM000010962,18001016,PRCP,33,,,E, 1444 | EZE00100082,18001016,TMAX,119,,,E, 1445 | EZE00100082,18001016,TMIN,72,,,E, 1446 | ITE00100554,18001017,TMAX,184,,,E, 1447 | ITE00100554,18001017,TMIN,116,,,E, 1448 | GM000010962,18001017,PRCP,15,,,E, 1449 | EZE00100082,18001017,TMAX,81,,,E, 1450 | EZE00100082,18001017,TMIN,48,,,E, 1451 | ITE00100554,18001018,TMAX,154,,,E, 1452 | ITE00100554,18001018,TMIN,104,,,E, 1453 | GM000010962,18001018,PRCP,11,,,E, 1454 | EZE00100082,18001018,TMAX,99,,,E, 1455 | EZE00100082,18001018,TMIN,22,,,E, 1456 | ITE00100554,18001019,TMAX,150,,,E, 1457 | ITE00100554,18001019,TMIN,75,,,E, 1458 | GM000010962,18001019,PRCP,0,,,E, 1459 | EZE00100082,18001019,TMAX,127,,,E, 1460 | EZE00100082,18001019,TMIN,85,,,E, 1461 | ITE00100554,18001020,TMAX,149,,,E, 1462 | ITE00100554,18001020,TMIN,69,,,E, 1463 | GM000010962,18001020,PRCP,0,,,E, 1464 | EZE00100082,18001020,TMAX,136,,,E, 1465 | EZE00100082,18001020,TMIN,75,,,E, 1466 | ITE00100554,18001021,TMAX,148,,,E, 1467 | ITE00100554,18001021,TMIN,71,,,E, 1468 | GM000010962,18001021,PRCP,0,,,E, 1469 | EZE00100082,18001021,TMAX,133,,,E, 1470 | EZE00100082,18001021,TMIN,60,,,E, 1471 | ITE00100554,18001022,TMAX,129,,,E, 1472 | ITE00100554,18001022,TMIN,110,,,E, 1473 | GM000010962,18001022,PRCP,12,,,E, 1474 | EZE00100082,18001022,TMAX,106,,,E, 1475 | EZE00100082,18001022,TMIN,52,,,E, 1476 | ITE00100554,18001023,TMAX,116,,,E, 1477 | ITE00100554,18001023,TMIN,113,,,E, 1478 | GM000010962,18001023,PRCP,11,,,E, 1479 | EZE00100082,18001023,TMAX,75,,,E, 1480 | EZE00100082,18001023,TMIN,44,,,E, 1481 | ITE00100554,18001024,TMAX,104,,,E, 1482 | ITE00100554,18001024,TMIN,44,,,E, 1483 | GM000010962,18001024,PRCP,0,,,E, 1484 | EZE00100082,18001024,TMAX,92,,,E, 1485 | EZE00100082,18001024,TMIN,33,,,E, 1486 | ITE00100554,18001025,TMAX,121,,,E, 1487 | ITE00100554,18001025,TMIN,31,,,E, 1488 | GM000010962,18001025,PRCP,0,,,E, 1489 | EZE00100082,18001025,TMAX,76,,,E, 1490 | EZE00100082,18001025,TMIN,-11,,,E, 1491 | ITE00100554,18001026,TMAX,129,,,E, 1492 | ITE00100554,18001026,TMIN,50,,,E, 1493 | GM000010962,18001026,PRCP,0,,,E, 1494 | EZE00100082,18001026,TMAX,90,,,E, 1495 | EZE00100082,18001026,TMIN,55,,,E, 1496 | ITE00100554,18001027,TMAX,134,,,E, 1497 | ITE00100554,18001027,TMIN,60,,,E, 1498 | GM000010962,18001027,PRCP,0,,,E, 1499 | EZE00100082,18001027,TMAX,102,,,E, 1500 | EZE00100082,18001027,TMIN,45,,,E, 1501 | ITE00100554,18001028,TMAX,148,,,E, 1502 | ITE00100554,18001028,TMIN,125,,,E, 1503 | GM000010962,18001028,PRCP,0,,,E, 1504 | EZE00100082,18001028,TMAX,99,,,E, 1505 | EZE00100082,18001028,TMIN,59,,,E, 1506 | ITE00100554,18001029,TMAX,150,,,E, 1507 | ITE00100554,18001029,TMIN,113,,,E, 1508 | GM000010962,18001029,PRCP,2,,,E, 1509 | EZE00100082,18001029,TMAX,97,,,E, 1510 | EZE00100082,18001029,TMIN,60,,,E, 1511 | ITE00100554,18001030,TMAX,150,,,E, 1512 | ITE00100554,18001030,TMIN,116,,,E, 1513 | GM000010962,18001030,PRCP,0,,,E, 1514 | EZE00100082,18001030,TMAX,123,,,E, 1515 | EZE00100082,18001030,TMIN,70,,,E, 1516 | ITE00100554,18001031,TMAX,125,,,E, 1517 | ITE00100554,18001031,TMIN,116,,,E, 1518 | GM000010962,18001031,PRCP,0,,,E, 1519 | EZE00100082,18001031,TMAX,90,,,E, 1520 | EZE00100082,18001031,TMIN,22,,,E, 1521 | ITE00100554,18001101,TMAX,150,,,E, 1522 | ITE00100554,18001101,TMIN,116,,,E, 1523 | GM000010962,18001101,PRCP,20,,,E, 1524 | EZE00100082,18001101,TMAX,88,,,E, 1525 | EZE00100082,18001101,TMIN,57,,,E, 1526 | ITE00100554,18001102,TMAX,141,,,E, 1527 | ITE00100554,18001102,TMIN,116,,,E, 1528 | GM000010962,18001102,PRCP,63,,,E, 1529 | EZE00100082,18001102,TMAX,93,,,E, 1530 | EZE00100082,18001102,TMIN,60,,,E, 1531 | ITE00100554,18001103,TMAX,135,,,E, 1532 | ITE00100554,18001103,TMIN,90,,,E, 1533 | GM000010962,18001103,PRCP,0,,,E, 1534 | EZE00100082,18001103,TMAX,114,,,E, 1535 | EZE00100082,18001103,TMIN,79,,,E, 1536 | ITE00100554,18001104,TMAX,113,,,E, 1537 | ITE00100554,18001104,TMIN,106,,,E, 1538 | GM000010962,18001104,PRCP,0,,,E, 1539 | EZE00100082,18001104,TMAX,116,,,E, 1540 | EZE00100082,18001104,TMIN,79,,,E, 1541 | ITE00100554,18001105,TMAX,109,,,E, 1542 | ITE00100554,18001105,TMIN,100,,,E, 1543 | GM000010962,18001105,PRCP,54,,,E, 1544 | EZE00100082,18001105,TMAX,85,,,E, 1545 | EZE00100082,18001105,TMIN,61,,,E, 1546 | ITE00100554,18001106,TMAX,113,,,E, 1547 | ITE00100554,18001106,TMIN,48,,,E, 1548 | GM000010962,18001106,PRCP,59,,,E, 1549 | EZE00100082,18001106,TMAX,84,,,E, 1550 | EZE00100082,18001106,TMIN,51,,,E, 1551 | ITE00100554,18001107,TMAX,123,,,E, 1552 | ITE00100554,18001107,TMIN,50,,,E, 1553 | GM000010962,18001107,PRCP,25,,,E, 1554 | EZE00100082,18001107,TMAX,86,,,E, 1555 | EZE00100082,18001107,TMIN,45,,,E, 1556 | ITE00100554,18001108,TMAX,110,,,E, 1557 | ITE00100554,18001108,TMIN,98,,,E, 1558 | GM000010962,18001108,PRCP,0,,,E, 1559 | EZE00100082,18001108,TMAX,122,,,E, 1560 | EZE00100082,18001108,TMIN,74,,,E, 1561 | ITE00100554,18001109,TMAX,113,,,E, 1562 | ITE00100554,18001109,TMIN,109,,,E, 1563 | GM000010962,18001109,PRCP,4,,,E, 1564 | EZE00100082,18001109,TMAX,173,,,E, 1565 | EZE00100082,18001109,TMIN,122,,,E, 1566 | ITE00100554,18001110,TMAX,146,,,E, 1567 | ITE00100554,18001110,TMIN,104,,,E, 1568 | GM000010962,18001110,PRCP,0,,,E, 1569 | EZE00100082,18001110,TMAX,147,,,E, 1570 | EZE00100082,18001110,TMIN,64,,,E, 1571 | ITE00100554,18001111,TMAX,146,,,E, 1572 | ITE00100554,18001111,TMIN,116,,,E, 1573 | GM000010962,18001111,PRCP,0,,,E, 1574 | EZE00100082,18001111,TMAX,97,,,E, 1575 | EZE00100082,18001111,TMIN,43,,,E, 1576 | ITE00100554,18001112,TMAX,134,,,E, 1577 | ITE00100554,18001112,TMIN,121,,,E, 1578 | GM000010962,18001112,PRCP,0,,,E, 1579 | EZE00100082,18001112,TMAX,103,,,E, 1580 | EZE00100082,18001112,TMIN,45,,,E, 1581 | ITE00100554,18001113,TMAX,113,,,E, 1582 | ITE00100554,18001113,TMIN,98,,,E, 1583 | GM000010962,18001113,PRCP,42,,,E, 1584 | EZE00100082,18001113,TMAX,80,,,E, 1585 | EZE00100082,18001113,TMIN,50,,,E, 1586 | ITE00100554,18001114,TMAX,131,,,E, 1587 | ITE00100554,18001114,TMIN,88,,,E, 1588 | GM000010962,18001114,PRCP,39,,,E, 1589 | EZE00100082,18001114,TMAX,81,,,E, 1590 | EZE00100082,18001114,TMIN,27,,,E, 1591 | ITE00100554,18001115,TMAX,119,,,E, 1592 | ITE00100554,18001115,TMIN,66,,,E, 1593 | GM000010962,18001115,PRCP,0,,,E, 1594 | EZE00100082,18001115,TMAX,44,,,E, 1595 | EZE00100082,18001115,TMIN,1,,,E, 1596 | ITE00100554,18001116,TMAX,94,,,E, 1597 | ITE00100554,18001116,TMIN,94,,,E, 1598 | GM000010962,18001116,PRCP,0,,,E, 1599 | EZE00100082,18001116,TMAX,63,,,E, 1600 | EZE00100082,18001116,TMIN,30,,,E, 1601 | ITE00100554,18001117,TMAX,94,,,E, 1602 | ITE00100554,18001117,TMIN,79,,,E, 1603 | GM000010962,18001117,PRCP,47,,,E, 1604 | EZE00100082,18001117,TMAX,70,,,E, 1605 | EZE00100082,18001117,TMIN,44,,,E, 1606 | ITE00100554,18001118,TMAX,98,,,E, 1607 | ITE00100554,18001118,TMIN,54,,,E, 1608 | GM000010962,18001118,PRCP,13,,,E, 1609 | EZE00100082,18001118,TMAX,70,,,E, 1610 | EZE00100082,18001118,TMIN,50,,,E, 1611 | ITE00100554,18001119,TMAX,109,,,E, 1612 | ITE00100554,18001119,TMIN,81,,,E, 1613 | GM000010962,18001119,PRCP,114,,,E, 1614 | EZE00100082,18001119,TMAX,68,,,E, 1615 | EZE00100082,18001119,TMIN,55,,,E, 1616 | ITE00100554,18001120,TMAX,116,,,E, 1617 | ITE00100554,18001120,TMIN,54,,,E, 1618 | GM000010962,18001120,PRCP,62,,,E, 1619 | EZE00100082,18001120,TMAX,57,,,E, 1620 | EZE00100082,18001120,TMIN,15,,,E, 1621 | ITE00100554,18001121,TMAX,91,,,E, 1622 | ITE00100554,18001121,TMIN,46,,,E, 1623 | GM000010962,18001121,PRCP,7,,,E, 1624 | EZE00100082,18001121,TMAX,29,,,E, 1625 | EZE00100082,18001121,TMIN,2,,,E, 1626 | ITE00100554,18001122,TMAX,60,,,E, 1627 | ITE00100554,18001122,TMIN,54,,,E, 1628 | GM000010962,18001122,PRCP,0,,,E, 1629 | EZE00100082,18001122,TMAX,34,,,E, 1630 | EZE00100082,18001122,TMIN,0,,,E, 1631 | ITE00100554,18001123,TMAX,69,,,E, 1632 | ITE00100554,18001123,TMIN,21,,,E, 1633 | GM000010962,18001123,PRCP,0,,,E, 1634 | EZE00100082,18001123,TMAX,58,,,E, 1635 | EZE00100082,18001123,TMIN,30,,,E, 1636 | ITE00100554,18001124,TMAX,63,,,E, 1637 | ITE00100554,18001124,TMIN,19,,,E, 1638 | GM000010962,18001124,PRCP,0,,,E, 1639 | EZE00100082,18001124,TMAX,69,,,E, 1640 | EZE00100082,18001124,TMIN,14,,,E, 1641 | ITE00100554,18001125,TMAX,63,,,E, 1642 | ITE00100554,18001125,TMIN,40,,,E, 1643 | GM000010962,18001125,PRCP,0,,,E, 1644 | EZE00100082,18001125,TMAX,43,,,E, 1645 | EZE00100082,18001125,TMIN,-5,,,E, 1646 | ITE00100554,18001126,TMAX,59,,,E, 1647 | ITE00100554,18001126,TMIN,54,,,E, 1648 | GM000010962,18001126,PRCP,0,,,E, 1649 | EZE00100082,18001126,TMAX,45,,,E, 1650 | EZE00100082,18001126,TMIN,-6,,,E, 1651 | ITE00100554,18001127,TMAX,48,,,E, 1652 | ITE00100554,18001127,TMIN,41,,,E, 1653 | GM000010962,18001127,PRCP,86,,,E, 1654 | EZE00100082,18001127,TMAX,56,,,E, 1655 | EZE00100082,18001127,TMIN,38,,,E, 1656 | ITE00100554,18001128,TMAX,63,,,E, 1657 | ITE00100554,18001128,TMIN,48,,,E, 1658 | GM000010962,18001128,PRCP,56,,,E, 1659 | EZE00100082,18001128,TMAX,38,,,E, 1660 | EZE00100082,18001128,TMIN,17,,,E, 1661 | ITE00100554,18001129,TMAX,66,,,E, 1662 | ITE00100554,18001129,TMIN,59,,,E, 1663 | GM000010962,18001129,PRCP,13,,,E, 1664 | EZE00100082,18001129,TMAX,42,,,E, 1665 | EZE00100082,18001129,TMIN,17,,,E, 1666 | ITE00100554,18001130,TMAX,66,,,E, 1667 | ITE00100554,18001130,TMIN,25,,,E, 1668 | GM000010962,18001130,PRCP,0,,,E, 1669 | EZE00100082,18001130,TMAX,22,,,E, 1670 | EZE00100082,18001130,TMIN,0,,,E, 1671 | ITE00100554,18001201,TMAX,29,,,E, 1672 | ITE00100554,18001201,TMIN,9,,,E, 1673 | GM000010962,18001201,PRCP,7,,,E, 1674 | EZE00100082,18001201,TMAX,34,,,E, 1675 | EZE00100082,18001201,TMIN,-2,,,E, 1676 | ITE00100554,18001202,TMAX,10,,,E, 1677 | ITE00100554,18001202,TMIN,-23,,,E, 1678 | GM000010962,18001202,PRCP,0,,,E, 1679 | EZE00100082,18001202,TMAX,39,,,E, 1680 | EZE00100082,18001202,TMIN,-5,,,E, 1681 | ITE00100554,18001203,TMAX,16,,,E, 1682 | ITE00100554,18001203,TMIN,-4,,,E, 1683 | GM000010962,18001203,PRCP,14,,,E, 1684 | EZE00100082,18001203,TMAX,49,,,E, 1685 | EZE00100082,18001203,TMIN,11,,,E, 1686 | ITE00100554,18001204,TMAX,13,,,E, 1687 | ITE00100554,18001204,TMIN,4,,,E, 1688 | GM000010962,18001204,PRCP,0,,,E, 1689 | EZE00100082,18001204,TMAX,34,,,E, 1690 | EZE00100082,18001204,TMIN,-5,,,E, 1691 | ITE00100554,18001205,TMAX,54,,,E, 1692 | ITE00100554,18001205,TMIN,19,,,E, 1693 | GM000010962,18001205,PRCP,0,,,E, 1694 | EZE00100082,18001205,TMAX,23,,,E, 1695 | EZE00100082,18001205,TMIN,4,,,E, 1696 | ITE00100554,18001206,TMAX,29,,,E, 1697 | ITE00100554,18001206,TMIN,13,,,E, 1698 | GM000010962,18001206,PRCP,0,,,E, 1699 | EZE00100082,18001206,TMAX,63,,,E, 1700 | EZE00100082,18001206,TMIN,19,,,E, 1701 | ITE00100554,18001207,TMAX,13,,,E, 1702 | ITE00100554,18001207,TMIN,3,,,E, 1703 | GM000010962,18001207,PRCP,0,,,E, 1704 | EZE00100082,18001207,TMAX,38,,,E, 1705 | EZE00100082,18001207,TMIN,0,,,E, 1706 | ITE00100554,18001208,TMAX,0,,,E, 1707 | ITE00100554,18001208,TMIN,-4,,,E, 1708 | GM000010962,18001208,PRCP,0,,,E, 1709 | EZE00100082,18001208,TMAX,24,,,E, 1710 | EZE00100082,18001208,TMIN,-4,,,E, 1711 | ITE00100554,18001209,TMAX,10,,,E, 1712 | ITE00100554,18001209,TMIN,-10,,,E, 1713 | GM000010962,18001209,PRCP,0,,,E, 1714 | EZE00100082,18001209,TMAX,24,,,E, 1715 | EZE00100082,18001209,TMIN,-17,,,E, 1716 | ITE00100554,18001210,TMAX,21,,I,E, 1717 | ITE00100554,18001210,TMIN,10,,,E, 1718 | GM000010962,18001210,PRCP,0,,,E, 1719 | EZE00100082,18001210,TMAX,27,,,E, 1720 | EZE00100082,18001210,TMIN,-9,,,E, 1721 | ITE00100554,18001211,TMAX,41,,,E, 1722 | ITE00100554,18001211,TMIN,35,,I,E, 1723 | GM000010962,18001211,PRCP,0,,,E, 1724 | EZE00100082,18001211,TMAX,47,,,E, 1725 | EZE00100082,18001211,TMIN,23,,,E, 1726 | ITE00100554,18001212,TMAX,46,,,E, 1727 | ITE00100554,18001212,TMIN,29,,,E, 1728 | GM000010962,18001212,PRCP,0,,,E, 1729 | EZE00100082,18001212,TMAX,44,,,E, 1730 | EZE00100082,18001212,TMIN,35,,,E, 1731 | ITE00100554,18001213,TMAX,71,,,E, 1732 | ITE00100554,18001213,TMIN,46,,,E, 1733 | GM000010962,18001213,PRCP,0,,,E, 1734 | EZE00100082,18001213,TMAX,45,,,E, 1735 | EZE00100082,18001213,TMIN,35,,,E, 1736 | ITE00100554,18001214,TMAX,85,,,E, 1737 | ITE00100554,18001214,TMIN,66,,,E, 1738 | GM000010962,18001214,PRCP,0,,,E, 1739 | EZE00100082,18001214,TMAX,38,,,E, 1740 | EZE00100082,18001214,TMIN,27,,,E, 1741 | ITE00100554,18001215,TMAX,91,,,E, 1742 | ITE00100554,18001215,TMIN,73,,,E, 1743 | GM000010962,18001215,PRCP,0,,,E, 1744 | EZE00100082,18001215,TMAX,27,,,E, 1745 | EZE00100082,18001215,TMIN,23,,,E, 1746 | ITE00100554,18001216,TMAX,66,,,E, 1747 | ITE00100554,18001216,TMIN,60,,,E, 1748 | GM000010962,18001216,PRCP,0,,,E, 1749 | EZE00100082,18001216,TMAX,23,,,E, 1750 | EZE00100082,18001216,TMIN,-3,,,E, 1751 | ITE00100554,18001217,TMAX,50,,,E, 1752 | ITE00100554,18001217,TMIN,50,,,E, 1753 | GM000010962,18001217,PRCP,0,,,E, 1754 | EZE00100082,18001217,TMAX,-1,,,E, 1755 | EZE00100082,18001217,TMIN,-14,,,E, 1756 | ITE00100554,18001218,TMAX,54,,,E, 1757 | ITE00100554,18001218,TMIN,48,,I,E, 1758 | GM000010962,18001218,PRCP,0,,,E, 1759 | EZE00100082,18001218,TMAX,-8,,,E, 1760 | EZE00100082,18001218,TMIN,-35,,,E, 1761 | ITE00100554,18001219,TMAX,29,,I,E, 1762 | ITE00100554,18001219,TMIN,29,,I,E, 1763 | GM000010962,18001219,PRCP,0,,,E, 1764 | EZE00100082,18001219,TMAX,-14,,,E, 1765 | EZE00100082,18001219,TMIN,-56,,,E, 1766 | ITE00100554,18001220,TMAX,13,,I,E, 1767 | ITE00100554,18001220,TMIN,10,,,E, 1768 | GM000010962,18001220,PRCP,0,,,E, 1769 | EZE00100082,18001220,TMAX,-14,,,E, 1770 | EZE00100082,18001220,TMIN,-64,,,E, 1771 | ITE00100554,18001221,TMAX,10,,,E, 1772 | ITE00100554,18001221,TMIN,-13,,,E, 1773 | GM000010962,18001221,PRCP,0,,,E, 1774 | EZE00100082,18001221,TMAX,4,,,E, 1775 | EZE00100082,18001221,TMIN,-83,,,E, 1776 | ITE00100554,18001222,TMAX,16,,,E, 1777 | ITE00100554,18001222,TMIN,-13,,,E, 1778 | GM000010962,18001222,PRCP,13,,,E, 1779 | EZE00100082,18001222,TMAX,54,,,E, 1780 | EZE00100082,18001222,TMIN,4,,,E, 1781 | ITE00100554,18001223,TMAX,23,,,E, 1782 | ITE00100554,18001223,TMIN,-16,,,E, 1783 | GM000010962,18001223,PRCP,0,,,E, 1784 | EZE00100082,18001223,TMAX,52,,,E, 1785 | EZE00100082,18001223,TMIN,30,,,E, 1786 | ITE00100554,18001224,TMAX,16,,,E, 1787 | ITE00100554,18001224,TMIN,4,,,E, 1788 | GM000010962,18001224,PRCP,0,,,E, 1789 | EZE00100082,18001224,TMAX,30,,,E, 1790 | EZE00100082,18001224,TMIN,6,,,E, 1791 | ITE00100554,18001225,TMAX,25,,,E, 1792 | ITE00100554,18001225,TMIN,13,,,E, 1793 | GM000010962,18001225,PRCP,0,,,E, 1794 | EZE00100082,18001225,TMAX,21,,,E, 1795 | EZE00100082,18001225,TMIN,11,,,E, 1796 | ITE00100554,18001226,TMAX,38,,,E, 1797 | ITE00100554,18001226,TMIN,25,,,E, 1798 | GM000010962,18001226,PRCP,0,,,E, 1799 | EZE00100082,18001226,TMAX,36,,,E, 1800 | EZE00100082,18001226,TMIN,8,,,E, 1801 | ITE00100554,18001227,TMAX,10,,I,E, 1802 | ITE00100554,18001227,TMIN,9,,,E, 1803 | GM000010962,18001227,PRCP,0,,,E, 1804 | EZE00100082,18001227,TMAX,47,,,E, 1805 | EZE00100082,18001227,TMIN,20,,,E, 1806 | ITE00100554,18001228,TMAX,35,,,E, 1807 | ITE00100554,18001228,TMIN,25,,,E, 1808 | GM000010962,18001228,PRCP,7,,,E, 1809 | EZE00100082,18001228,TMAX,43,,,E, 1810 | EZE00100082,18001228,TMIN,7,,,E, 1811 | ITE00100554,18001229,TMAX,50,,,E, 1812 | ITE00100554,18001229,TMIN,16,,,E, 1813 | GM000010962,18001229,PRCP,9,,,E, 1814 | EZE00100082,18001229,TMAX,45,,,E, 1815 | EZE00100082,18001229,TMIN,-3,,,E, 1816 | ITE00100554,18001230,TMAX,50,,,E, 1817 | ITE00100554,18001230,TMIN,31,,,E, 1818 | GM000010962,18001230,PRCP,13,,,E, 1819 | EZE00100082,18001230,TMAX,96,,,E, 1820 | EZE00100082,18001230,TMIN,14,,,E, 1821 | ITE00100554,18001231,TMAX,50,,,E, 1822 | ITE00100554,18001231,TMIN,25,,,E, 1823 | GM000010962,18001231,PRCP,16,,,E, 1824 | EZE00100082,18001231,TMAX,14,,,E, 1825 | EZE00100082,18001231,TMIN,-4,,,E, 1826 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2017 Packt 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /Marvel-names.txt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Frank-Kanes-Taming-Big-Data-with-Apache-Spark-and-Python/67da5261c71f924938da9e51273ac390c759f7ca/Marvel-names.txt -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | # Frank Kane's Taming Big Data with Apache Spark and Python 5 | This is the code repository for [Frank Kane's Taming Big Data with Apache Spark and Python](https://www.packtpub.com/big-data-and-business-intelligence/frank-kanes-taming-big-data-apache-spark-and-python?utm_source=github&utm_medium=repository&utm_campaign=9781787287945), published by [Packt](https://www.packtpub.com/?utm_source=github). It contains all the supporting project files necessary to work through the book from start to finish. 6 | ## About the Book 7 | Frank Kane’s Taming Big Data with Apache Spark and Python is your companion to learning Apache Spark in a hands-on manner. Frank will start you off by teaching you how to set up Spark on a single system or on a cluster, and you’ll soon move on to analyzing large data sets using Spark RDD, and developing and running effective Spark jobs quickly using Python. 8 | 9 | Apache Spark has emerged as the next big thing in the Big Data domain – quickly rising from an ascending technology to an established superstar in just a matter of years. Spark allows you to quickly extract actionable insights from large amounts of data, on a real-time basis, making it an essential tool in many modern businesses. 10 | 11 | Frank has packed this book with over 15 interactive, fun-filled examples relevant to the real world, and he will empower you to understand the Spark ecosystem and implement production-grade real-time Spark projects with ease. 12 | ##Instructions and Navigation 13 | All of the code is organized into folders. Each folder starts with a number followed by the application name. For example, Chapter02. 14 | 15 | 16 | 17 | The code will look like the following: 18 | ``` 19 | from pyspark import SparkConf, SparkContext 20 | 21 | import collections 22 | 23 | conf = SparkConf().setMaster("local").setAppName("RatingsHistogram") 24 | sc = SparkContext(conf = conf) 25 | 26 | lines = sc.textFile("file:///SparkCourse/ml-100k/u.data") 27 | ratings = lines.map(lambda x: x.split()[2]) 28 | result = ratings.countByValue() 29 | 30 | sortedResults = collections.OrderedDict(sorted(result.items())) 31 | for key, value in sortedResults.items(): 32 | print("%s %i" % (key, value)) 33 | ``` 34 | 35 | For this book you’ll need a Python development environment (Python 3.5 or newer), a Canopy installer, Java Development Kit, and of course Spark itself (Spark 2.0 and beyond). 36 | 37 | 38 | We'll show you how to install this software in first chapter of the book. 39 | 40 | 41 | This book is based on the Windows operating system, so installations are provided according to it. If you have Mac or Linux, you can follow this URL http://media.sundog-soft.com/spark-python-install.pdf, which contains written instructions on getting everything set up on Mac OS and on Linux. 42 | 43 | ## Related Products 44 | * [Taming Big Data with Spark Streaming and Scala – Hands On! [Video]](https://www.packtpub.com/big-data-and-business-intelligence/taming-big-data-spark-streaming-and-scala-–-hands-video?utm_source=github&utm_medium=repository&utm_campaign=9781787123915) 45 | 46 | * [Taming Big Data with Apache Spark and Python - Hands On! [Video]](https://www.packtpub.com/big-data-and-business-intelligence/taming-big-data-apache-spark-and-python-hands-video?utm_source=github&utm_medium=repository&utm_campaign=9781787129931) 47 | 48 | * [Taming Big Data with MapReduce and Hadoop - Hands On! [Video]](https://www.packtpub.com/big-data-and-business-intelligence/taming-big-data-mapreduce-and-hadoop-hands-video?utm_source=github&utm_medium=repository&utm_campaign=9781787125568) 49 | 50 | ### Download a free PDF 51 | 52 | If you have already purchased a print or Kindle version of this book, you can get a DRM-free PDF version at no cost.
Simply click on the link to claim your free PDF.
53 |

https://packt.link/free-ebook/9781787287945

-------------------------------------------------------------------------------- /book.txt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Frank-Kanes-Taming-Big-Data-with-Apache-Spark-and-Python/67da5261c71f924938da9e51273ac390c759f7ca/book.txt -------------------------------------------------------------------------------- /degrees-of-separation.py: -------------------------------------------------------------------------------- 1 | #Boilerplate stuff: 2 | from pyspark import SparkConf, SparkContext 3 | 4 | conf = SparkConf().setMaster("local").setAppName("DegreesOfSeparation") 5 | sc = SparkContext(conf = conf) 6 | 7 | # The characters we wish to find the degree of separation between: 8 | startCharacterID = 5306 #SpiderMan 9 | targetCharacterID = 14 #ADAM 3,031 (who?) 10 | 11 | # Our accumulator, used to signal when we find the target character during 12 | # our BFS traversal. 13 | hitCounter = sc.accumulator(0) 14 | 15 | def convertToBFS(line): 16 | fields = line.split() 17 | heroID = int(fields[0]) 18 | connections = [] 19 | for connection in fields[1:]: 20 | connections.append(int(connection)) 21 | 22 | color = 'WHITE' 23 | distance = 9999 24 | 25 | if (heroID == startCharacterID): 26 | color = 'GRAY' 27 | distance = 0 28 | 29 | return (heroID, (connections, distance, color)) 30 | 31 | 32 | def createStartingRdd(): 33 | inputFile = sc.textFile("file:///sparkcourse/marvel-graph.txt") 34 | return inputFile.map(convertToBFS) 35 | 36 | def bfsMap(node): 37 | characterID = node[0] 38 | data = node[1] 39 | connections = data[0] 40 | distance = data[1] 41 | color = data[2] 42 | 43 | results = [] 44 | 45 | #If this node needs to be expanded... 46 | if (color == 'GRAY'): 47 | for connection in connections: 48 | newCharacterID = connection 49 | newDistance = distance + 1 50 | newColor = 'GRAY' 51 | if (targetCharacterID == connection): 52 | hitCounter.add(1) 53 | 54 | newEntry = (newCharacterID, ([], newDistance, newColor)) 55 | results.append(newEntry) 56 | 57 | #We've processed this node, so color it black 58 | color = 'BLACK' 59 | 60 | #Emit the input node so we don't lose it. 61 | results.append( (characterID, (connections, distance, color)) ) 62 | return results 63 | 64 | def bfsReduce(data1, data2): 65 | edges1 = data1[0] 66 | edges2 = data2[0] 67 | distance1 = data1[1] 68 | distance2 = data2[1] 69 | color1 = data1[2] 70 | color2 = data2[2] 71 | 72 | distance = 9999 73 | color = 'WHITE' 74 | edges = [] 75 | 76 | # See if one is the original node with its connections. 77 | # If so preserve them. 78 | if (len(edges1) > 0): 79 | edges.extend(edges1) 80 | if (len(edges2) > 0): 81 | edges.extend(edges2) 82 | 83 | # Preserve minimum distance 84 | if (distance1 < distance): 85 | distance = distance1 86 | 87 | if (distance2 < distance): 88 | distance = distance2 89 | 90 | # Preserve darkest color 91 | if (color1 == 'WHITE' and (color2 == 'GRAY' or color2 == 'BLACK')): 92 | color = color2 93 | 94 | if (color1 == 'GRAY' and color2 == 'BLACK'): 95 | color = color2 96 | 97 | if (color2 == 'WHITE' and (color1 == 'GRAY' or color1 == 'BLACK')): 98 | color = color1 99 | 100 | if (color2 == 'GRAY' and color1 == 'BLACK'): 101 | color = color1 102 | 103 | return (edges, distance, color) 104 | 105 | 106 | #Main program here: 107 | iterationRdd = createStartingRdd() 108 | 109 | for iteration in range(0, 10): 110 | print("Running BFS iteration# " + str(iteration+1)) 111 | 112 | # Create new vertices as needed to darken or reduce distances in the 113 | # reduce stage. If we encounter the node we're looking for as a GRAY 114 | # node, increment our accumulator to signal that we're done. 115 | mapped = iterationRdd.flatMap(bfsMap) 116 | 117 | # Note that mapped.count() action here forces the RDD to be evaluated, and 118 | # that's the only reason our accumulator is actually updated. 119 | print("Processing " + str(mapped.count()) + " values.") 120 | 121 | if (hitCounter.value > 0): 122 | print("Hit the target character! From " + str(hitCounter.value) \ 123 | + " different direction(s).") 124 | break 125 | 126 | # Reducer combines data for each character ID, preserving the darkest 127 | # color and shortest path. 128 | iterationRdd = mapped.reduceByKey(bfsReduce) 129 | -------------------------------------------------------------------------------- /fakefriends.csv: -------------------------------------------------------------------------------- 1 | 0,Will,33,385 2 | 1,Jean-Luc,26,2 3 | 2,Hugh,55,221 4 | 3,Deanna,40,465 5 | 4,Quark,68,21 6 | 5,Weyoun,59,318 7 | 6,Gowron,37,220 8 | 7,Will,54,307 9 | 8,Jadzia,38,380 10 | 9,Hugh,27,181 11 | 10,Odo,53,191 12 | 11,Ben,57,372 13 | 12,Keiko,54,253 14 | 13,Jean-Luc,56,444 15 | 14,Hugh,43,49 16 | 15,Rom,36,49 17 | 16,Weyoun,22,323 18 | 17,Odo,35,13 19 | 18,Jean-Luc,45,455 20 | 19,Geordi,60,246 21 | 20,Odo,67,220 22 | 21,Miles,19,268 23 | 22,Quark,30,72 24 | 23,Keiko,51,271 25 | 24,Julian,25,1 26 | 25,Ben,21,445 27 | 26,Julian,22,100 28 | 27,Leeta,42,363 29 | 28,Martok,49,476 30 | 29,Nog,48,364 31 | 30,Keiko,50,175 32 | 31,Miles,39,161 33 | 32,Nog,26,281 34 | 33,Dukat,53,197 35 | 34,Jean-Luc,43,249 36 | 35,Beverly,27,305 37 | 36,Kasidy,32,81 38 | 37,Geordi,58,21 39 | 38,Deanna,64,65 40 | 39,Morn,31,192 41 | 40,Odo,52,413 42 | 41,Hugh,67,167 43 | 42,Brunt,54,75 44 | 43,Guinan,58,345 45 | 44,Nerys,35,244 46 | 45,Dukat,52,77 47 | 46,Morn,25,96 48 | 47,Brunt,24,49 49 | 48,Nog,20,1 50 | 49,Ezri,40,254 51 | 50,Quark,51,283 52 | 51,Lwaxana,36,212 53 | 52,Beverly,19,269 54 | 53,Geordi,62,31 55 | 54,Brunt,19,5 56 | 55,Keiko,41,278 57 | 56,Gowron,44,194 58 | 57,Odo,57,294 59 | 58,Hugh,59,158 60 | 59,Morn,59,284 61 | 60,Geordi,20,100 62 | 61,Kasidy,62,442 63 | 62,Keiko,69,9 64 | 63,Jean-Luc,58,54 65 | 64,Elim,31,15 66 | 65,Guinan,52,169 67 | 66,Geordi,21,477 68 | 67,Jadzia,48,135 69 | 68,Guinan,33,74 70 | 69,Jean-Luc,30,204 71 | 70,Brunt,52,393 72 | 71,Geordi,45,184 73 | 72,Kasidy,22,179 74 | 73,Brunt,20,384 75 | 74,Leeta,65,208 76 | 75,Morn,40,459 77 | 76,Will,62,201 78 | 77,Weyoun,40,407 79 | 78,Data,61,337 80 | 79,Leeta,58,348 81 | 80,Dukat,67,445 82 | 81,Jadzia,54,440 83 | 82,Hugh,57,465 84 | 83,Geordi,32,308 85 | 84,Ben,28,311 86 | 85,Quark,66,383 87 | 86,Hugh,55,257 88 | 87,Ezri,31,481 89 | 88,Ben,66,188 90 | 89,Worf,24,492 91 | 90,Kasidy,33,471 92 | 91,Rom,46,88 93 | 92,Gowron,54,7 94 | 93,Elim,46,63 95 | 94,Morn,62,133 96 | 95,Odo,29,173 97 | 96,Ezri,25,233 98 | 97,Nerys,69,361 99 | 98,Will,44,178 100 | 99,Keiko,69,491 101 | 100,Jean-Luc,61,460 102 | 101,Morn,67,123 103 | 102,Dukat,40,18 104 | 103,Ezri,61,2 105 | 104,Dukat,32,142 106 | 105,Morn,50,417 107 | 106,Beverly,18,499 108 | 107,Will,64,419 109 | 108,Leeta,25,274 110 | 109,Quark,53,417 111 | 110,Nog,64,137 112 | 111,Nerys,37,46 113 | 112,Morn,25,13 114 | 113,Quark,41,244 115 | 114,Worf,33,275 116 | 115,Dukat,18,397 117 | 116,Ben,69,75 118 | 117,Rom,52,487 119 | 118,Ben,28,304 120 | 119,Worf,29,344 121 | 120,Jean-Luc,68,264 122 | 121,Deanna,35,355 123 | 122,Data,45,400 124 | 123,Jadzia,45,439 125 | 124,Data,47,429 126 | 125,Rom,66,284 127 | 126,Brunt,26,84 128 | 127,Miles,40,284 129 | 128,Julian,34,221 130 | 129,Kasidy,45,252 131 | 130,Gowron,67,350 132 | 131,Hugh,65,309 133 | 132,Odo,46,462 134 | 133,Quark,19,265 135 | 134,Ben,45,340 136 | 135,Rom,42,427 137 | 136,Will,19,335 138 | 137,Martok,28,32 139 | 138,Dukat,32,384 140 | 139,Nog,36,193 141 | 140,Elim,64,234 142 | 141,Miles,36,424 143 | 142,Guinan,59,335 144 | 143,Data,60,124 145 | 144,Miles,22,93 146 | 145,Leeta,45,470 147 | 146,Nerys,58,174 148 | 147,Quark,61,373 149 | 148,Nerys,39,248 150 | 149,Beverly,49,340 151 | 150,Nerys,55,313 152 | 151,Keiko,54,441 153 | 152,Kasidy,54,235 154 | 153,Morn,63,342 155 | 154,Geordi,40,389 156 | 155,Beverly,50,126 157 | 156,Deanna,44,360 158 | 157,Dukat,34,319 159 | 158,Odo,31,340 160 | 159,Kasidy,67,438 161 | 160,Beverly,58,112 162 | 161,Odo,39,207 163 | 162,Ezri,59,14 164 | 163,Nerys,67,204 165 | 164,Will,31,172 166 | 165,Leeta,26,282 167 | 166,Lwaxana,25,10 168 | 167,Quark,48,57 169 | 168,Martok,68,112 170 | 169,Beverly,53,92 171 | 170,Jean-Luc,68,490 172 | 171,Weyoun,29,126 173 | 172,Kasidy,55,204 174 | 173,Leeta,23,129 175 | 174,Deanna,47,87 176 | 175,Will,38,459 177 | 176,Worf,55,474 178 | 177,Brunt,67,316 179 | 178,Kasidy,26,381 180 | 179,Elim,37,426 181 | 180,Kasidy,30,108 182 | 181,Rom,43,404 183 | 182,Weyoun,26,145 184 | 183,Ben,47,488 185 | 184,Julian,44,84 186 | 185,Weyoun,48,287 187 | 186,Miles,31,109 188 | 187,Nerys,47,225 189 | 188,Keiko,54,369 190 | 189,Quark,62,23 191 | 190,Geordi,60,294 192 | 191,Nog,40,349 193 | 192,Jadzia,45,497 194 | 193,Nerys,60,125 195 | 194,Kasidy,38,2 196 | 195,Ben,30,376 197 | 196,Data,38,173 198 | 197,Leeta,38,76 199 | 198,Brunt,48,381 200 | 199,Hugh,38,180 201 | 200,Kasidy,21,472 202 | 201,Ezri,23,174 203 | 202,Lwaxana,63,469 204 | 203,Ezri,46,125 205 | 204,Deanna,64,164 206 | 205,Morn,69,236 207 | 206,Will,21,491 208 | 207,Lwaxana,41,206 209 | 208,Nog,37,271 210 | 209,Brunt,27,174 211 | 210,Data,33,245 212 | 211,Ben,61,73 213 | 212,Geordi,55,284 214 | 213,Worf,28,312 215 | 214,Miles,32,182 216 | 215,Will,22,6 217 | 216,Brunt,34,116 218 | 217,Keiko,29,260 219 | 218,Gowron,66,350 220 | 219,Lwaxana,26,345 221 | 220,Jean-Luc,41,394 222 | 221,Dukat,27,150 223 | 222,Rom,34,346 224 | 223,Odo,40,406 225 | 224,Keiko,44,277 226 | 225,Elim,19,106 227 | 226,Lwaxana,37,207 228 | 227,Ezri,40,198 229 | 228,Martok,26,293 230 | 229,Gowron,24,150 231 | 230,Beverly,54,397 232 | 231,Ezri,59,42 233 | 232,Worf,68,481 234 | 233,Gowron,67,70 235 | 234,Deanna,49,22 236 | 235,Elim,57,8 237 | 236,Brunt,62,442 238 | 237,Nerys,61,469 239 | 238,Deanna,25,305 240 | 239,Nog,48,345 241 | 240,Deanna,46,154 242 | 241,Quark,45,332 243 | 242,Data,25,101 244 | 243,Martok,61,68 245 | 244,Dukat,21,471 246 | 245,Jean-Luc,28,174 247 | 246,Leeta,41,260 248 | 247,Ezri,52,338 249 | 248,Dukat,21,138 250 | 249,Nerys,66,41 251 | 250,Hugh,36,342 252 | 251,Rom,55,57 253 | 252,Will,36,174 254 | 253,Leeta,69,116 255 | 254,Ezri,67,79 256 | 255,Deanna,60,324 257 | 256,Worf,32,412 258 | 257,Data,51,161 259 | 258,Worf,68,217 260 | 259,Kasidy,29,11 261 | 260,Brunt,38,96 262 | 261,Jadzia,40,172 263 | 262,Will,51,334 264 | 263,Martok,40,33 265 | 264,Julian,29,228 266 | 265,Gowron,27,471 267 | 266,Jean-Luc,66,496 268 | 267,Dukat,49,106 269 | 268,Ezri,26,298 270 | 269,Beverly,55,289 271 | 270,Data,44,353 272 | 271,Morn,25,446 273 | 272,Quark,29,367 274 | 273,Data,51,493 275 | 274,Julian,64,244 276 | 275,Will,47,13 277 | 276,Dukat,54,462 278 | 277,Hugh,46,300 279 | 278,Data,44,499 280 | 279,Beverly,23,133 281 | 280,Nerys,26,492 282 | 281,Worf,21,89 283 | 282,Geordi,32,404 284 | 283,Dukat,65,443 285 | 284,Nog,26,269 286 | 285,Data,43,101 287 | 286,Lwaxana,30,384 288 | 287,Beverly,64,396 289 | 288,Hugh,56,354 290 | 289,Ezri,30,221 291 | 290,Beverly,62,290 292 | 291,Dukat,23,373 293 | 292,Nog,63,380 294 | 293,Deanna,23,65 295 | 294,Leeta,38,410 296 | 295,Nerys,40,56 297 | 296,Data,38,454 298 | 297,Ben,45,395 299 | 298,Guinan,57,207 300 | 299,Rom,57,311 301 | 300,Beverly,49,147 302 | 301,Weyoun,28,108 303 | 302,Beverly,37,263 304 | 303,Deanna,46,319 305 | 304,Will,19,404 306 | 305,Quark,29,182 307 | 306,Beverly,23,323 308 | 307,Keiko,41,340 309 | 308,Morn,45,59 310 | 309,Geordi,67,153 311 | 310,Odo,68,189 312 | 311,Martok,43,48 313 | 312,Jadzia,61,421 314 | 313,Dukat,59,169 315 | 314,Geordi,36,168 316 | 315,Weyoun,25,208 317 | 316,Hugh,64,391 318 | 317,Guinan,59,439 319 | 318,Deanna,35,251 320 | 319,Leeta,30,476 321 | 320,Worf,62,450 322 | 321,Data,44,61 323 | 322,Rom,58,92 324 | 323,Nog,29,236 325 | 324,Miles,56,343 326 | 325,Keiko,51,492 327 | 326,Beverly,46,407 328 | 327,Julian,20,63 329 | 328,Deanna,62,41 330 | 329,Dukat,67,35 331 | 330,Ezri,33,356 332 | 331,Martok,30,17 333 | 332,Julian,55,362 334 | 333,Ben,29,207 335 | 334,Leeta,40,7 336 | 335,Odo,27,337 337 | 336,Gowron,47,4 338 | 337,Miles,58,10 339 | 338,Will,28,180 340 | 339,Morn,66,305 341 | 340,Nerys,57,275 342 | 341,Data,18,326 343 | 342,Guinan,46,151 344 | 343,Odo,26,254 345 | 344,Data,30,487 346 | 345,Ezri,31,394 347 | 346,Hugh,29,329 348 | 347,Geordi,32,24 349 | 348,Weyoun,33,460 350 | 349,Kasidy,20,277 351 | 350,Nog,55,464 352 | 351,Keiko,54,72 353 | 352,Deanna,27,53 354 | 353,Julian,64,499 355 | 354,Kasidy,69,15 356 | 355,Keiko,46,352 357 | 356,Weyoun,67,149 358 | 357,Brunt,26,7 359 | 358,Will,52,276 360 | 359,Nog,54,442 361 | 360,Nerys,39,68 362 | 361,Worf,68,206 363 | 362,Ezri,39,120 364 | 363,Dukat,41,397 365 | 364,Lwaxana,54,115 366 | 365,Brunt,65,430 367 | 366,Keiko,19,119 368 | 367,Data,39,106 369 | 368,Elim,26,383 370 | 369,Quark,48,266 371 | 370,Jadzia,53,86 372 | 371,Guinan,31,435 373 | 372,Brunt,62,273 374 | 373,Quark,19,272 375 | 374,Nog,68,293 376 | 375,Hugh,66,201 377 | 376,Gowron,23,392 378 | 377,Beverly,18,418 379 | 378,Guinan,47,97 380 | 379,Data,60,304 381 | 380,Brunt,35,65 382 | 381,Nog,38,95 383 | 382,Worf,66,240 384 | 383,Data,69,148 385 | 384,Martok,67,355 386 | 385,Beverly,57,436 387 | 386,Data,35,428 388 | 387,Will,43,335 389 | 388,Nog,30,184 390 | 389,Weyoun,38,38 391 | 390,Martok,22,266 392 | 391,Ben,64,309 393 | 392,Data,64,343 394 | 393,Quark,50,436 395 | 394,Keiko,23,230 396 | 395,Jean-Luc,56,15 397 | 396,Keiko,67,38 398 | 397,Quark,69,470 399 | 398,Lwaxana,26,124 400 | 399,Beverly,24,401 401 | 400,Data,29,128 402 | 401,Jean-Luc,42,467 403 | 402,Hugh,58,98 404 | 403,Weyoun,21,224 405 | 404,Kasidy,18,24 406 | 405,Nog,56,371 407 | 406,Ben,57,121 408 | 407,Miles,36,68 409 | 408,Dukat,62,496 410 | 409,Nog,19,267 411 | 410,Odo,35,299 412 | 411,Lwaxana,58,22 413 | 412,Jadzia,53,451 414 | 413,Hugh,45,147 415 | 414,Martok,56,313 416 | 415,Quark,30,65 417 | 416,Nerys,33,294 418 | 417,Julian,37,106 419 | 418,Guinan,32,212 420 | 419,Kasidy,55,176 421 | 420,Jadzia,26,391 422 | 421,Will,40,261 423 | 422,Ben,67,292 424 | 423,Will,44,388 425 | 424,Keiko,55,470 426 | 425,Quark,33,243 427 | 426,Worf,24,77 428 | 427,Brunt,28,258 429 | 428,Lwaxana,68,423 430 | 429,Jean-Luc,63,345 431 | 430,Geordi,36,493 432 | 431,Quark,36,343 433 | 432,Brunt,45,54 434 | 433,Ezri,38,203 435 | 434,Deanna,57,289 436 | 435,Guinan,42,275 437 | 436,Geordi,57,229 438 | 437,Morn,59,221 439 | 438,Nog,42,95 440 | 439,Data,18,417 441 | 440,Elim,48,394 442 | 441,Jadzia,38,143 443 | 442,Nog,46,105 444 | 443,Geordi,64,175 445 | 444,Keiko,18,472 446 | 445,Guinan,40,286 447 | 446,Quark,32,41 448 | 447,Julian,38,34 449 | 448,Nerys,48,439 450 | 449,Data,52,419 451 | 450,Weyoun,37,234 452 | 451,Martok,28,34 453 | 452,Ezri,58,6 454 | 453,Julian,44,337 455 | 454,Weyoun,52,456 456 | 455,Elim,33,463 457 | 456,Ezri,37,471 458 | 457,Worf,51,81 459 | 458,Elim,44,335 460 | 459,Geordi,26,84 461 | 460,Hugh,47,400 462 | 461,Geordi,41,236 463 | 462,Nerys,23,287 464 | 463,Keiko,40,220 465 | 464,Beverly,25,485 466 | 465,Morn,53,126 467 | 466,Brunt,33,228 468 | 467,Weyoun,42,194 469 | 468,Ezri,46,227 470 | 469,Brunt,55,271 471 | 470,Deanna,38,160 472 | 471,Brunt,52,273 473 | 472,Nog,27,154 474 | 473,Morn,35,38 475 | 474,Keiko,34,48 476 | 475,Ben,52,446 477 | 476,Jean-Luc,28,378 478 | 477,Gowron,50,119 479 | 478,Dukat,41,62 480 | 479,Kasidy,44,320 481 | 480,Geordi,43,428 482 | 481,Elim,32,97 483 | 482,Ben,48,146 484 | 483,Hugh,57,99 485 | 484,Leeta,22,478 486 | 485,Rom,47,356 487 | 486,Elim,49,17 488 | 487,Brunt,69,431 489 | 488,Nog,61,103 490 | 489,Odo,33,410 491 | 490,Nerys,65,101 492 | 491,Rom,60,2 493 | 492,Dukat,19,36 494 | 493,Hugh,23,357 495 | 494,Kasidy,18,194 496 | 495,Data,46,155 497 | 496,Gowron,39,275 498 | 497,Lwaxana,34,423 499 | 498,Jadzia,62,36 500 | 499,Leeta,62,12 501 | -------------------------------------------------------------------------------- /friends-by-age.py: -------------------------------------------------------------------------------- 1 | from pyspark import SparkConf, SparkContext 2 | 3 | conf = SparkConf().setMaster("local").setAppName("FriendsByAge") 4 | sc = SparkContext(conf = conf) 5 | 6 | def parseLine(line): 7 | fields = line.split(',') 8 | age = int(fields[2]) 9 | numFriends = int(fields[3]) 10 | return (age, numFriends) 11 | 12 | lines = sc.textFile("file:///SparkCourse/fakefriends.csv") 13 | rdd = lines.map(parseLine) 14 | totalsByAge = rdd.mapValues(lambda x: (x, 1)).reduceByKey(lambda x, y: (x[0] + y[0], x[1] + y[1])) 15 | averagesByAge = totalsByAge.mapValues(lambda x: x[0] / x[1]) 16 | results = averagesByAge.collect() 17 | for result in results: 18 | print(result) 19 | -------------------------------------------------------------------------------- /max-temperatures.py: -------------------------------------------------------------------------------- 1 | from pyspark import SparkConf, SparkContext 2 | 3 | conf = SparkConf().setMaster("local").setAppName("MaxTemperatures") 4 | sc = SparkContext(conf = conf) 5 | 6 | def parseLine(line): 7 | fields = line.split(',') 8 | stationID = fields[0] 9 | entryType = fields[2] 10 | temperature = float(fields[3]) * 0.1 * (9.0 / 5.0) + 32.0 11 | return (stationID, entryType, temperature) 12 | 13 | lines = sc.textFile("file:///SparkCourse/1800.csv") 14 | parsedLines = lines.map(parseLine) 15 | maxTemps = parsedLines.filter(lambda x: "TMAX" in x[1]) 16 | stationTemps = maxTemps.map(lambda x: (x[0], x[2])) 17 | maxTemps = stationTemps.reduceByKey(lambda x, y: max(x,y)) 18 | results = maxTemps.collect(); 19 | 20 | for result in results: 21 | print(result[0] + "\t{:.2f}F".format(result[1])) 22 | -------------------------------------------------------------------------------- /min-temperatures.py: -------------------------------------------------------------------------------- 1 | from pyspark import SparkConf, SparkContext 2 | 3 | conf = SparkConf().setMaster("local").setAppName("MinTemperatures") 4 | sc = SparkContext(conf = conf) 5 | 6 | def parseLine(line): 7 | fields = line.split(',') 8 | stationID = fields[0] 9 | entryType = fields[2] 10 | temperature = float(fields[3]) * 0.1 * (9.0 / 5.0) + 32.0 11 | return (stationID, entryType, temperature) 12 | 13 | lines = sc.textFile("file:///SparkCourse/1800.csv") 14 | parsedLines = lines.map(parseLine) 15 | minTemps = parsedLines.filter(lambda x: "TMIN" in x[1]) 16 | stationTemps = minTemps.map(lambda x: (x[0], x[2])) 17 | minTemps = stationTemps.reduceByKey(lambda x, y: min(x,y)) 18 | results = minTemps.collect(); 19 | 20 | for result in results: 21 | print(result[0] + "\t{:.2f}F".format(result[1])) 22 | -------------------------------------------------------------------------------- /most-popular-superhero.py: -------------------------------------------------------------------------------- 1 | from pyspark import SparkConf, SparkContext 2 | 3 | conf = SparkConf().setMaster("local").setAppName("PopularHero") 4 | sc = SparkContext(conf = conf) 5 | 6 | def countCoOccurences(line): 7 | elements = line.split() 8 | return (int(elements[0]), len(elements) - 1) 9 | 10 | def parseNames(line): 11 | fields = line.split('\"') 12 | return (int(fields[0]), fields[1].encode("utf8")) 13 | 14 | names = sc.textFile("file:///SparkCourse/marvel-names.txt") 15 | namesRdd = names.map(parseNames) 16 | 17 | lines = sc.textFile("file:///SparkCourse/marvel-graph.txt") 18 | 19 | pairings = lines.map(countCoOccurences) 20 | totalFriendsByCharacter = pairings.reduceByKey(lambda x, y : x + y) 21 | flipped = totalFriendsByCharacter.map(lambda (x,y) : (y,x)) 22 | 23 | mostPopular = flipped.max() 24 | 25 | mostPopularName = namesRdd.lookup(mostPopular[1])[0] 26 | 27 | print(mostPopularName + " is the most popular superhero, with " + \ 28 | str(mostPopular[0]) + " co-appearances.") 29 | -------------------------------------------------------------------------------- /movie-recommendations-als-1m.py: -------------------------------------------------------------------------------- 1 | import sys 2 | from pyspark import SparkConf, SparkContext 3 | from pyspark.mllib.recommendation import ALS, Rating 4 | 5 | def loadMovieNames(): 6 | movieNames = {} 7 | with open("ml-1m/movies.dat") as f: 8 | for line in f: 9 | fields = line.split('::') 10 | movieNames[int(fields[0])] = fields[1].decode('ascii', 'ignore') 11 | return movieNames 12 | 13 | conf = SparkConf().setMaster("local[*]").setAppName("MovieRecommendationsALS") 14 | sc = SparkContext(conf = conf) 15 | sc.setCheckpointDir('checkpoint') 16 | 17 | print("\nLoading movie names...") 18 | nameDict = loadMovieNames() 19 | 20 | data = sc.textFile("file:///E:/SparkCourse/ml-1m/ratings.dat") 21 | 22 | ratings = data.map(lambda l: l.split("::")).map(lambda l: Rating(int(l[0]), int(l[1]), float(l[2]))).cache() 23 | 24 | # Build the recommendation model using Alternating Least Squares 25 | print("\nTraining recommendation model...") 26 | rank = 10 27 | numIterations = 20 28 | model = ALS.train(ratings, rank, numIterations) 29 | 30 | userID = int(sys.argv[1]) 31 | 32 | print("\nRatings for user ID " + str(userID) + ":") 33 | userRatings = ratings.filter(lambda l: l[0] == userID) 34 | for rating in userRatings.collect(): 35 | print(nameDict[int(rating[1])] + ": " + str(rating[2])) 36 | 37 | print("\nTop 10 recommendations:") 38 | recommendations = model.recommendProducts(userID, 10) 39 | for recommendation in recommendations: 40 | print(nameDict[int(recommendation[1])] + \ 41 | " score " + str(recommendation[2])) 42 | -------------------------------------------------------------------------------- /movie-recommendations-als.py: -------------------------------------------------------------------------------- 1 | import sys 2 | from pyspark import SparkConf, SparkContext 3 | from pyspark.mllib.recommendation import ALS, Rating 4 | 5 | def loadMovieNames(): 6 | movieNames = {} 7 | with open("ml-100k/u.ITEM") as f: 8 | for line in f: 9 | fields = line.split('|') 10 | movieNames[int(fields[0])] = fields[1].decode('ascii', 'ignore') 11 | return movieNames 12 | 13 | conf = SparkConf().setMaster("local[*]").setAppName("MovieRecommendationsALS") 14 | sc = SparkContext(conf = conf) 15 | sc.setCheckpointDir('checkpoint') 16 | 17 | print("\nLoading movie names...") 18 | nameDict = loadMovieNames() 19 | 20 | data = sc.textFile("file:///SparkCourse/ml-100k/u.data") 21 | 22 | ratings = data.map(lambda l: l.split()).map(lambda l: Rating(int(l[0]), int(l[1]), float(l[2]))).cache() 23 | 24 | # Build the recommendation model using Alternating Least Squares 25 | print("\nTraining recommendation model...") 26 | rank = 10 27 | # Lowered numIterations to ensure it works on lower-end systems 28 | numIterations = 6 29 | model = ALS.train(ratings, rank, numIterations) 30 | 31 | userID = int(sys.argv[1]) 32 | 33 | print("\nRatings for user ID " + str(userID) + ":") 34 | userRatings = ratings.filter(lambda l: l[0] == userID) 35 | for rating in userRatings.collect(): 36 | print nameDict[int(rating[1])] + ": " + str(rating[2]) 37 | 38 | print("\nTop 10 recommendations:") 39 | recommendations = model.recommendProducts(userID, 10) 40 | for recommendation in recommendations: 41 | print nameDict[int(recommendation[1])] + \ 42 | " score " + str(recommendation[2]) 43 | -------------------------------------------------------------------------------- /movie-similarities-1m.py: -------------------------------------------------------------------------------- 1 | import sys 2 | from pyspark import SparkConf, SparkContext 3 | from math import sqrt 4 | 5 | #To run on EMR successfully + output results for Star Wars: 6 | #aws s3 cp s3://sundog-spark/MovieSimilarities1M.py ./ 7 | #aws s3 sp c3://sundog-spark/ml-1m/movies.dat ./ 8 | #spark-submit --executor-memory 1g MovieSimilarities1M.py 260 9 | 10 | def loadMovieNames(): 11 | movieNames = {} 12 | with open("movies.dat") as f: 13 | for line in f: 14 | fields = line.split("::") 15 | movieNames[int(fields[0])] = fields[1].decode('ascii', 'ignore') 16 | return movieNames 17 | 18 | def makePairs((user, ratings)): 19 | (movie1, rating1) = ratings[0] 20 | (movie2, rating2) = ratings[1] 21 | return ((movie1, movie2), (rating1, rating2)) 22 | 23 | def filterDuplicates( (userID, ratings) ): 24 | (movie1, rating1) = ratings[0] 25 | (movie2, rating2) = ratings[1] 26 | return movie1 < movie2 27 | 28 | def computeCosineSimilarity(ratingPairs): 29 | numPairs = 0 30 | sum_xx = sum_yy = sum_xy = 0 31 | for ratingX, ratingY in ratingPairs: 32 | sum_xx += ratingX * ratingX 33 | sum_yy += ratingY * ratingY 34 | sum_xy += ratingX * ratingY 35 | numPairs += 1 36 | 37 | numerator = sum_xy 38 | denominator = sqrt(sum_xx) * sqrt(sum_yy) 39 | 40 | score = 0 41 | if (denominator): 42 | score = (numerator / (float(denominator))) 43 | 44 | return (score, numPairs) 45 | 46 | 47 | conf = SparkConf() 48 | sc = SparkContext(conf = conf) 49 | 50 | print("\nLoading movie names...") 51 | nameDict = loadMovieNames() 52 | 53 | data = sc.textFile("s3n://sundog-spark/ml-1m/ratings.dat") 54 | 55 | # Map ratings to key / value pairs: user ID => movie ID, rating 56 | ratings = data.map(lambda l: l.split("::")).map(lambda l: (int(l[0]), (int(l[1]), float(l[2])))) 57 | 58 | # Emit every movie rated together by the same user. 59 | # Self-join to find every combination. 60 | ratingsPartitioned = ratings.partitionBy(100) 61 | joinedRatings = ratingsPartitioned.join(ratingsPartitioned) 62 | 63 | # At this point our RDD consists of userID => ((movieID, rating), (movieID, rating)) 64 | 65 | # Filter out duplicate pairs 66 | uniqueJoinedRatings = joinedRatings.filter(filterDuplicates) 67 | 68 | # Now key by (movie1, movie2) pairs. 69 | moviePairs = uniqueJoinedRatings.map(makePairs).partitionBy(100) 70 | 71 | # We now have (movie1, movie2) => (rating1, rating2) 72 | # Now collect all ratings for each movie pair and compute similarity 73 | moviePairRatings = moviePairs.groupByKey() 74 | 75 | # We now have (movie1, movie2) = > (rating1, rating2), (rating1, rating2) ... 76 | # Can now compute similarities. 77 | moviePairSimilarities = moviePairRatings.mapValues(computeCosineSimilarity).persist() 78 | 79 | # Save the results if desired 80 | moviePairSimilarities.sortByKey() 81 | moviePairSimilarities.saveAsTextFile("movie-sims") 82 | 83 | # Extract similarities for the movie we care about that are "good". 84 | if (len(sys.argv) > 1): 85 | 86 | scoreThreshold = 0.97 87 | coOccurenceThreshold = 1000 88 | 89 | movieID = int(sys.argv[1]) 90 | 91 | # Filter for movies with this sim that are "good" as defined by 92 | # our quality thresholds above 93 | filteredResults = moviePairSimilarities.filter(lambda((pair,sim)): \ 94 | (pair[0] == movieID or pair[1] == movieID) \ 95 | and sim[0] > scoreThreshold and sim[1] > coOccurenceThreshold) 96 | 97 | # Sort by quality score. 98 | results = filteredResults.map(lambda((pair,sim)): (sim, pair)).sortByKey(ascending = False).take(10) 99 | 100 | print("Top 10 similar movies for " + nameDict[movieID]) 101 | for result in results: 102 | (sim, pair) = result 103 | # Display the similarity result that isn't the movie we're looking at 104 | similarMovieID = pair[0] 105 | if (similarMovieID == movieID): 106 | similarMovieID = pair[1] 107 | print(nameDict[similarMovieID] + "\tscore: " + str(sim[0]) + "\tstrength: " + str(sim[1])) 108 | -------------------------------------------------------------------------------- /movie-similarities-cluster.py: -------------------------------------------------------------------------------- 1 | import sys 2 | from pyspark import SparkConf, SparkContext 3 | from math import sqrt 4 | 5 | def loadMovieNames(): 6 | movieNames = {} 7 | with open("u.ITEM") as f: 8 | for line in f: 9 | fields = line.split('|') 10 | movieNames[int(fields[0])] = fields[1].decode('ascii', 'ignore') 11 | return movieNames 12 | 13 | def makePairs((user, ratings)): 14 | (movie1, rating1) = ratings[0] 15 | (movie2, rating2) = ratings[1] 16 | return ((movie1, movie2), (rating1, rating2)) 17 | 18 | def filterDuplicates( (userID, ratings) ): 19 | (movie1, rating1) = ratings[0] 20 | (movie2, rating2) = ratings[1] 21 | return movie1 < movie2 22 | 23 | def computeCosineSimilarity(ratingPairs): 24 | numPairs = 0 25 | sum_xx = sum_yy = sum_xy = 0 26 | for ratingX, ratingY in ratingPairs: 27 | sum_xx += ratingX * ratingX 28 | sum_yy += ratingY * ratingY 29 | sum_xy += ratingX * ratingY 30 | numPairs += 1 31 | 32 | numerator = sum_xy 33 | denominator = sqrt(sum_xx) * sqrt(sum_yy) 34 | 35 | score = 0 36 | if (denominator): 37 | score = (numerator / (float(denominator))) 38 | 39 | return (score, numPairs) 40 | 41 | 42 | conf = SparkConf().setMaster("local[*]").setAppName("MovieSimilarities") 43 | sc = SparkContext(conf = conf) 44 | 45 | print("\nLoading movie names...") 46 | nameDict = loadMovieNames() 47 | 48 | data = sc.textFile("s3://sundog-spark/ml-100k/u.data") 49 | 50 | # Map ratings to key / value pairs: user ID => movie ID, rating 51 | ratings = data.map(lambda l: l.split()).map(lambda l: (int(l[0]), (int(l[1]), float(l[2])))) 52 | 53 | # Emit every movie rated together by the same user. 54 | # Self-join to find every combination. 55 | joinedRatings = ratings.join(ratings) 56 | 57 | # At this point our RDD consists of userID => ((movieID, rating), (movieID, rating)) 58 | 59 | # Filter out duplicate pairs 60 | uniqueJoinedRatings = joinedRatings.filter(filterDuplicates) 61 | 62 | # Now key by (movie1, movie2) pairs. 63 | moviePairs = uniqueJoinedRatings.map(makePairs) 64 | 65 | # We now have (movie1, movie2) => (rating1, rating2) 66 | # Now collect all ratings for each movie pair and compute similarity 67 | moviePairRatings = moviePairs.groupByKey() 68 | 69 | # We now have (movie1, movie2) = > (rating1, rating2), (rating1, rating2) ... 70 | # Can now compute similarities. 71 | moviePairSimilarities = moviePairRatings.mapValues(computeCosineSimilarity).cache() 72 | 73 | # Save the results if desired 74 | #moviePairSimilarities.sortByKey() 75 | #moviePairSimilarities.saveAsTextFile("movie-sims") 76 | 77 | # Extract similarities for the movie we care about that are "good". 78 | if (len(sys.argv) > 1): 79 | 80 | scoreThreshold = 0.97 81 | coOccurenceThreshold = 50 82 | 83 | movieID = int(sys.argv[1]) 84 | 85 | # Filter for movies with this sim that are "good" as defined by 86 | # our quality thresholds above 87 | filteredResults = moviePairSimilarities.filter(lambda((pair,sim)): \ 88 | (pair[0] == movieID or pair[1] == movieID) \ 89 | and sim[0] > scoreThreshold and sim[1] > coOccurenceThreshold) 90 | 91 | # Sort by quality score. 92 | results = filteredResults.map(lambda((pair,sim)): (sim, pair)).sortByKey(ascending = False).take(10) 93 | 94 | print("Top 10 similar movies for " + nameDict[movieID]) 95 | for result in results: 96 | (sim, pair) = result 97 | # Display the similarity result that isn't the movie we're looking at 98 | similarMovieID = pair[0] 99 | if (similarMovieID == movieID): 100 | similarMovieID = pair[1] 101 | print(nameDict[similarMovieID] + "\tscore: " + str(sim[0]) + "\tstrength: " + str(sim[1])) 102 | -------------------------------------------------------------------------------- /movie-similarities.py: -------------------------------------------------------------------------------- 1 | import sys 2 | from pyspark import SparkConf, SparkContext 3 | from math import sqrt 4 | 5 | def loadMovieNames(): 6 | movieNames = {} 7 | with open("ml-100k/u.ITEM") as f: 8 | for line in f: 9 | fields = line.split('|') 10 | movieNames[int(fields[0])] = fields[1].decode('ascii', 'ignore') 11 | return movieNames 12 | 13 | def makePairs((user, ratings)): 14 | (movie1, rating1) = ratings[0] 15 | (movie2, rating2) = ratings[1] 16 | return ((movie1, movie2), (rating1, rating2)) 17 | 18 | def filterDuplicates( (userID, ratings) ): 19 | (movie1, rating1) = ratings[0] 20 | (movie2, rating2) = ratings[1] 21 | return movie1 < movie2 22 | 23 | def computeCosineSimilarity(ratingPairs): 24 | numPairs = 0 25 | sum_xx = sum_yy = sum_xy = 0 26 | for ratingX, ratingY in ratingPairs: 27 | sum_xx += ratingX * ratingX 28 | sum_yy += ratingY * ratingY 29 | sum_xy += ratingX * ratingY 30 | numPairs += 1 31 | 32 | numerator = sum_xy 33 | denominator = sqrt(sum_xx) * sqrt(sum_yy) 34 | 35 | score = 0 36 | if (denominator): 37 | score = (numerator / (float(denominator))) 38 | 39 | return (score, numPairs) 40 | 41 | 42 | conf = SparkConf().setMaster("local[*]").setAppName("MovieSimilarities") 43 | sc = SparkContext(conf = conf) 44 | 45 | print("\nLoading movie names...") 46 | nameDict = loadMovieNames() 47 | 48 | data = sc.textFile("file:///SparkCourse/ml-100k/u.data") 49 | 50 | # Map ratings to key / value pairs: user ID => movie ID, rating 51 | ratings = data.map(lambda l: l.split()).map(lambda l: (int(l[0]), (int(l[1]), float(l[2])))) 52 | 53 | # Emit every movie rated together by the same user. 54 | # Self-join to find every combination. 55 | joinedRatings = ratings.join(ratings) 56 | 57 | # At this point our RDD consists of userID => ((movieID, rating), (movieID, rating)) 58 | 59 | # Filter out duplicate pairs 60 | uniqueJoinedRatings = joinedRatings.filter(filterDuplicates) 61 | 62 | # Now key by (movie1, movie2) pairs. 63 | moviePairs = uniqueJoinedRatings.map(makePairs) 64 | 65 | # We now have (movie1, movie2) => (rating1, rating2) 66 | # Now collect all ratings for each movie pair and compute similarity 67 | moviePairRatings = moviePairs.groupByKey() 68 | 69 | # We now have (movie1, movie2) = > (rating1, rating2), (rating1, rating2) ... 70 | # Can now compute similarities. 71 | moviePairSimilarities = moviePairRatings.mapValues(computeCosineSimilarity).cache() 72 | 73 | # Save the results if desired 74 | #moviePairSimilarities.sortByKey() 75 | #moviePairSimilarities.saveAsTextFile("movie-sims") 76 | 77 | # Extract similarities for the movie we care about that are "good". 78 | if (len(sys.argv) > 1): 79 | 80 | scoreThreshold = 0.97 81 | coOccurenceThreshold = 50 82 | 83 | movieID = int(sys.argv[1]) 84 | 85 | # Filter for movies with this sim that are "good" as defined by 86 | # our quality thresholds above 87 | filteredResults = moviePairSimilarities.filter(lambda((pair,sim)): \ 88 | (pair[0] == movieID or pair[1] == movieID) \ 89 | and sim[0] > scoreThreshold and sim[1] > coOccurenceThreshold) 90 | 91 | # Sort by quality score. 92 | results = filteredResults.map(lambda((pair,sim)): (sim, pair)).sortByKey(ascending = False).take(10) 93 | 94 | print("Top 10 similar movies for " + nameDict[movieID]) 95 | for result in results: 96 | (sim, pair) = result 97 | # Display the similarity result that isn't the movie we're looking at 98 | similarMovieID = pair[0] 99 | if (similarMovieID == movieID): 100 | similarMovieID = pair[1] 101 | print(nameDict[similarMovieID] + "\tscore: " + str(sim[0]) + "\tstrength: " + str(sim[1])) 102 | -------------------------------------------------------------------------------- /popular-movies-dataframe.py: -------------------------------------------------------------------------------- 1 | from pyspark.sql import SparkSession 2 | from pyspark.sql import Row 3 | from pyspark.sql import functions 4 | 5 | def loadMovieNames(): 6 | movieNames = {} 7 | with open("ml-100k/u.ITEM") as f: 8 | for line in f: 9 | fields = line.split('|') 10 | movieNames[int(fields[0])] = fields[1] 11 | return movieNames 12 | 13 | # Create a SparkSession (the config bit is only for Windows!) 14 | spark = SparkSession.builder.config("spark.sql.warehouse.dir", "file:///C:/temp").appName("PopularMovies").getOrCreate() 15 | 16 | # Load up our movie ID -> name dictionary 17 | nameDict = loadMovieNames() 18 | 19 | # Get the raw data 20 | lines = spark.sparkContext.textFile("file:///SparkCourse/ml-100k/u.data") 21 | # Convert it to a RDD of Row objects 22 | movies = lines.map(lambda x: Row(movieID =int(x.split()[1]))) 23 | # Convert that to a DataFrame 24 | movieDataset = spark.createDataFrame(movies) 25 | 26 | # Some SQL-style magic to sort all movies by popularity in one line! 27 | topMovieIDs = movieDataset.groupBy("movieID").count().orderBy("count", ascending=False).cache() 28 | 29 | # Show the results at this point: 30 | 31 | #|movieID|count| 32 | #+-------+-----+ 33 | #| 50| 584| 34 | #| 258| 509| 35 | #| 100| 508| 36 | 37 | topMovieIDs.show() 38 | 39 | # Grab the top 10 40 | top10 = topMovieIDs.take(10) 41 | 42 | # Print the results 43 | print("\n") 44 | for result in top10: 45 | # Each row has movieID, count as above. 46 | print("%s: %d" % (nameDict[result[0]], result[1])) 47 | 48 | # Stop the session 49 | spark.stop() 50 | -------------------------------------------------------------------------------- /popular-movies-nicer.py: -------------------------------------------------------------------------------- 1 | from pyspark import SparkConf, SparkContext 2 | 3 | def loadMovieNames(): 4 | movieNames = {} 5 | with open("ml-100k/u.ITEM") as f: 6 | for line in f: 7 | fields = line.split('|') 8 | movieNames[int(fields[0])] = fields[1] 9 | return movieNames 10 | 11 | conf = SparkConf().setMaster("local").setAppName("PopularMovies") 12 | sc = SparkContext(conf = conf) 13 | 14 | nameDict = sc.broadcast(loadMovieNames()) 15 | 16 | lines = sc.textFile("file:///SparkCourse/ml-100k/u.data") 17 | movies = lines.map(lambda x: (int(x.split()[1]), 1)) 18 | movieCounts = movies.reduceByKey(lambda x, y: x + y) 19 | 20 | flipped = movieCounts.map( lambda (x, y) : (y, x)) 21 | sortedMovies = flipped.sortByKey() 22 | 23 | sortedMoviesWithNames = sortedMovies.map(lambda (count, movie) : (nameDict.value[movie], count)) 24 | 25 | results = sortedMoviesWithNames.collect() 26 | 27 | for result in results: 28 | print(result) 29 | -------------------------------------------------------------------------------- /popular-movies.py: -------------------------------------------------------------------------------- 1 | from pyspark import SparkConf, SparkContext 2 | 3 | conf = SparkConf().setMaster("local").setAppName("PopularMovies") 4 | sc = SparkContext(conf = conf) 5 | 6 | lines = sc.textFile("file:///SparkCourse/ml-100k/u.data") 7 | movies = lines.map(lambda x: (int(x.split()[1]), 1)) 8 | movieCounts = movies.reduceByKey(lambda x, y: x + y) 9 | 10 | flipped = movieCounts.map( lambda (x, y) : (y, x) ) 11 | sortedMovies = flipped.sortByKey() 12 | 13 | results = sortedMovies.collect() 14 | 15 | for result in results: 16 | print(result) 17 | -------------------------------------------------------------------------------- /ratings-counter.py: -------------------------------------------------------------------------------- 1 | from pyspark import SparkConf, SparkContext 2 | import collections 3 | 4 | conf = SparkConf().setMaster("local").setAppName("RatingsHistogram") 5 | sc = SparkContext(conf = conf) 6 | 7 | lines = sc.textFile("file:///SparkCourse/ml-100k/u.data") 8 | ratings = lines.map(lambda x: x.split()[2]) 9 | result = ratings.countByValue() 10 | 11 | sortedResults = collections.OrderedDict(sorted(result.items())) 12 | for key, value in sortedResults.items(): 13 | print("%s %i" % (key, value)) 14 | -------------------------------------------------------------------------------- /regression.txt: -------------------------------------------------------------------------------- 1 | -1.74,1.66 2 | 1.24,-1.18 3 | 0.29,-0.40 4 | -0.13,0.09 5 | -0.39,0.38 6 | -1.79,1.73 7 | 0.71,-0.77 8 | 1.39,-1.48 9 | 1.15,-1.43 10 | 0.13,-0.07 11 | 0.05,-0.07 12 | 1.90,-1.80 13 | 1.48,-1.42 14 | 0.32,-0.30 15 | -1.11,1.00 16 | 0.51,-0.62 17 | -1.58,1.45 18 | -0.46,0.44 19 | -0.49,0.37 20 | 0.31,-0.30 21 | 0.85,-0.77 22 | 0.61,-0.69 23 | -0.66,0.65 24 | 0.99,-0.94 25 | -0.73,0.62 26 | 0.43,-0.42 27 | -0.50,0.35 28 | -1.77,1.66 29 | -0.65,0.88 30 | -2.29,2.35 31 | 0.74,-0.66 32 | 0.44,-0.44 33 | -0.41,0.51 34 | 0.40,-0.36 35 | -2.17,2.19 36 | 1.27,-1.11 37 | -0.94,1.00 38 | -0.59,0.66 39 | -0.04,0.01 40 | 0.70,-0.89 41 | -0.85,0.80 42 | -0.14,0.02 43 | 0.18,-0.18 44 | 1.20,-1.15 45 | 0.98,-0.91 46 | 0.08,0.04 47 | -0.33,0.39 48 | -1.12,1.10 49 | 0.08,-0.10 50 | -0.99,1.09 51 | -1.94,1.98 52 | 0.18,-0.15 53 | 0.44,-0.37 54 | -0.74,0.93 55 | 2.39,-2.40 56 | -1.91,1.86 57 | -0.07,-0.09 58 | -2.00,2.02 59 | -0.36,0.56 60 | -0.52,0.69 61 | 0.72,-0.81 62 | 0.69,-0.73 63 | 1.54,-1.49 64 | -2.26,2.25 65 | 2.33,-2.15 66 | 0.00,-0.07 67 | -1.30,1.45 68 | 1.11,-1.16 69 | -0.23,0.29 70 | -0.14,0.13 71 | -0.04,0.13 72 | 1.05,-0.80 73 | -1.22,1.20 74 | 0.76,-0.77 75 | 2.17,-2.02 76 | 0.82,-0.96 77 | 0.34,-0.36 78 | -1.61,1.72 79 | 0.74,-0.64 80 | 0.11,-0.09 81 | -1.40,1.32 82 | 0.21,-0.23 83 | -1.96,1.98 84 | 0.75,-0.92 85 | -0.59,0.63 86 | -1.39,1.32 87 | -1.26,1.17 88 | -0.53,0.50 89 | -1.10,0.92 90 | 0.55,-0.68 91 | 0.39,-0.42 92 | -1.48,1.38 93 | 0.53,-0.56 94 | -0.96,1.06 95 | -1.30,1.14 96 | 0.84,-0.84 97 | -1.16,1.25 98 | 0.02,-0.05 99 | 0.93,-0.79 100 | 0.97,-0.98 101 | -0.65,0.54 102 | -2.07,2.04 103 | 1.28,-1.27 104 | 0.72,-0.81 105 | -1.65,1.63 106 | -0.07,-0.01 107 | -2.12,1.90 108 | -1.01,0.92 109 | 1.06,-1.11 110 | -0.68,0.76 111 | 1.32,-1.49 112 | -1.05,1.00 113 | -1.25,1.20 114 | -0.49,0.44 115 | 0.11,-0.07 116 | -1.59,1.62 117 | 0.14,-0.14 118 | -0.24,0.27 119 | -0.85,0.91 120 | 1.19,-1.21 121 | 1.51,-1.61 122 | -1.30,1.18 123 | 0.17,-0.09 124 | 0.03,-0.04 125 | -0.35,0.26 126 | 0.21,-0.23 127 | -1.42,1.59 128 | 1.28,-1.26 129 | -0.27,0.16 130 | 0.26,-0.28 131 | 1.55,-1.23 132 | -0.05,0.06 133 | 0.37,-0.33 134 | -1.29,1.47 135 | -0.76,0.84 136 | 0.10,0.02 137 | 0.00,0.14 138 | -0.50,0.56 139 | -0.05,0.06 140 | -0.65,0.57 141 | 0.41,-0.39 142 | 0.09,-0.04 143 | -1.91,1.83 144 | 0.81,-0.65 145 | -0.30,0.42 146 | 0.18,-0.09 147 | 0.61,-0.48 148 | 0.76,-0.80 149 | 1.18,-1.17 150 | -0.78,0.66 151 | -2.09,1.97 152 | -0.62,0.58 153 | -1.11,1.23 154 | 2.56,-2.60 155 | 0.35,-0.34 156 | 1.47,-1.41 157 | 0.14,-0.28 158 | 0.85,-0.79 159 | 0.22,-0.31 160 | -0.03,0.13 161 | -0.80,0.80 162 | 0.84,-0.73 163 | -0.67,0.67 164 | -1.03,0.85 165 | 0.95,-0.79 166 | 0.51,-0.51 167 | -0.31,0.30 168 | 0.30,-0.45 169 | -0.26,0.23 170 | 1.63,-1.50 171 | -0.24,0.29 172 | -0.21,0.11 173 | 0.64,-0.62 174 | 1.49,-1.45 175 | 0.26,-0.34 176 | -0.51,0.43 177 | 0.81,-0.72 178 | -0.80,0.73 179 | -0.07,0.22 180 | 1.22,-1.30 181 | -1.26,1.21 182 | -0.84,0.83 183 | 1.91,-1.83 184 | 0.10,-0.18 185 | -0.91,1.03 186 | 0.74,-0.58 187 | 0.12,-0.23 188 | 0.39,-0.46 189 | -1.09,1.06 190 | -1.58,1.65 191 | -0.22,0.40 192 | -3.74,3.75 193 | 0.16,-0.21 194 | 0.40,-0.45 195 | 1.72,-1.89 196 | -0.91,0.91 197 | -0.35,0.47 198 | 0.90,-0.93 199 | 0.93,-0.85 200 | 0.15,-0.20 201 | 0.01,-0.06 202 | 0.15,-0.26 203 | 0.73,-0.78 204 | -0.89,1.04 205 | -0.76,0.66 206 | 1.07,-1.06 207 | 0.29,-0.25 208 | 0.17,-0.10 209 | -0.70,0.75 210 | 0.29,-0.25 211 | 1.50,-1.60 212 | 0.98,-0.91 213 | -0.02,-0.11 214 | 0.78,-0.79 215 | -1.09,1.18 216 | 0.14,-0.11 217 | -0.53,0.31 218 | 0.21,-0.25 219 | -0.45,0.32 220 | 0.83,-0.81 221 | 0.11,-0.16 222 | -0.24,0.26 223 | -0.36,0.41 224 | -1.20,1.20 225 | 0.66,-0.66 226 | -0.01,0.21 227 | 0.29,-0.21 228 | -0.95,1.08 229 | -0.28,0.42 230 | -0.16,0.22 231 | -1.88,1.89 232 | -1.36,1.41 233 | 0.71,-0.85 234 | 0.09,-0.16 235 | 1.26,-1.35 236 | -0.60,0.61 237 | -0.95,0.81 238 | -0.68,0.88 239 | 0.97,-0.85 240 | 1.06,-1.05 241 | 1.62,-1.80 242 | 1.63,-1.62 243 | 1.59,-1.77 244 | 0.16,-0.06 245 | -0.01,-0.04 246 | 0.54,-0.42 247 | -0.81,0.89 248 | 2.25,-2.24 249 | -0.88,0.77 250 | 0.64,-0.70 251 | 0.33,-0.25 252 | -0.65,0.64 253 | -0.75,0.72 254 | -1.17,1.24 255 | -0.30,0.31 256 | 1.52,-1.51 257 | 0.07,0.09 258 | 1.66,-1.67 259 | 0.04,0.01 260 | -0.33,0.30 261 | 0.46,-0.43 262 | 0.59,-0.69 263 | 1.18,-1.29 264 | 0.97,-0.89 265 | 1.05,-1.15 266 | 1.64,-1.41 267 | 0.43,-0.47 268 | 0.58,-0.66 269 | -2.58,2.57 270 | 0.15,-0.35 271 | 0.23,-0.31 272 | 0.21,-0.18 273 | -0.39,0.27 274 | 0.53,-0.47 275 | -0.10,0.07 276 | -1.53,1.68 277 | 0.30,-0.36 278 | -0.04,-0.13 279 | -1.24,1.09 280 | 1.51,-1.57 281 | 0.95,-1.01 282 | 0.40,-0.39 283 | 0.23,-0.24 284 | 0.25,-0.18 285 | 1.27,-1.17 286 | 1.11,-1.20 287 | 0.79,-0.72 288 | 1.14,-1.21 289 | 0.79,-0.68 290 | -0.82,0.70 291 | 0.66,-0.71 292 | -0.08,0.14 293 | 1.54,-1.52 294 | -0.71,0.55 295 | -0.42,0.45 296 | 0.08,-0.06 297 | 1.42,-1.31 298 | -0.05,-0.02 299 | 1.83,-1.70 300 | 0.24,-0.15 301 | 0.65,-0.45 302 | 0.20,-0.26 303 | -0.97,0.96 304 | 0.90,-0.87 305 | 0.29,-0.16 306 | 1.32,-1.53 307 | -0.11,0.11 308 | 1.03,-0.90 309 | -0.51,0.69 310 | 1.14,-1.09 311 | 1.64,-1.50 312 | -0.53,0.62 313 | 2.48,-2.53 314 | -1.04,1.17 315 | 1.10,-0.99 316 | -1.60,1.63 317 | -1.07,1.03 318 | 0.49,-0.44 319 | -0.43,0.39 320 | 0.46,-0.44 321 | -0.65,0.65 322 | -0.09,0.17 323 | 0.87,-0.88 324 | 0.34,-0.40 325 | 0.97,-0.90 326 | 0.25,-0.21 327 | 1.96,-1.95 328 | 0.70,-0.53 329 | -1.46,1.41 330 | -1.57,1.56 331 | -0.98,1.03 332 | 1.44,-1.42 333 | 1.03,-0.97 334 | -0.05,-0.06 335 | 0.80,-0.90 336 | -0.34,0.25 337 | 0.69,-0.63 338 | -1.67,1.46 339 | 0.70,-0.55 340 | 0.50,-0.62 341 | -1.08,1.12 342 | 0.37,-0.36 343 | -0.87,0.87 344 | 1.12,-1.10 345 | -0.92,0.95 346 | 0.26,-0.26 347 | 0.49,-0.64 348 | 1.48,-1.49 349 | -0.02,-0.08 350 | 1.11,-1.29 351 | -1.66,1.64 352 | 0.97,-0.92 353 | -0.09,0.10 354 | 0.09,0.01 355 | -0.62,0.68 356 | -1.75,1.69 357 | 0.58,-0.57 358 | 0.86,-0.89 359 | 1.93,-2.09 360 | 2.31,-2.30 361 | 0.16,-0.20 362 | 0.75,-0.60 363 | -0.59,0.39 364 | -0.52,0.53 365 | 0.09,-0.11 366 | 0.72,-0.91 367 | -0.68,0.80 368 | 1.00,-0.97 369 | -0.60,0.56 370 | 0.84,-0.82 371 | 0.25,-0.24 372 | 1.80,-1.79 373 | 0.08,0.01 374 | -0.00,0.03 375 | -0.49,0.44 376 | 0.65,-0.54 377 | -0.46,0.64 378 | -0.29,0.34 379 | 0.42,-0.29 380 | -0.53,0.51 381 | 0.17,-0.38 382 | -0.95,0.84 383 | 2.09,-2.14 384 | -2.36,2.63 385 | -0.21,0.36 386 | -2.54,2.39 387 | -0.16,0.16 388 | 0.30,-0.29 389 | -0.10,0.11 390 | 0.93,-0.96 391 | -1.17,1.25 392 | 0.02,-0.03 393 | -0.25,0.28 394 | -0.97,0.91 395 | -0.35,0.33 396 | -0.71,0.88 397 | 0.25,-0.09 398 | 0.00,-0.06 399 | -0.07,0.06 400 | -0.49,0.65 401 | -2.27,2.19 402 | 0.54,-0.72 403 | 0.09,-0.02 404 | -0.02,-0.04 405 | 0.13,-0.11 406 | -0.33,0.29 407 | -1.34,1.30 408 | -1.14,1.15 409 | 0.68,-0.64 410 | -0.78,0.81 411 | 0.90,-0.83 412 | -0.19,0.44 413 | -0.01,0.19 414 | 0.49,-0.37 415 | 0.02,0.01 416 | -0.69,0.74 417 | -1.20,1.11 418 | -0.09,0.16 419 | -0.54,0.52 420 | 1.01,-0.97 421 | 0.24,-0.27 422 | 0.55,-0.55 423 | 0.36,-0.47 424 | 1.39,-1.38 425 | 0.63,-0.56 426 | 0.94,-0.88 427 | -1.27,1.19 428 | 0.58,-0.61 429 | 0.41,-0.41 430 | 1.08,-1.08 431 | 0.42,-0.41 432 | -0.61,0.59 433 | -1.33,1.48 434 | 0.07,-0.07 435 | -0.05,0.18 436 | -0.25,0.22 437 | 0.77,-0.68 438 | 0.11,0.05 439 | -1.23,1.19 440 | -0.28,0.29 441 | -1.87,1.98 442 | 1.50,-1.61 443 | 0.54,-0.51 444 | -0.63,0.61 445 | -0.23,0.24 446 | -0.16,0.32 447 | -0.55,0.64 448 | -0.89,0.88 449 | -0.22,0.29 450 | 0.53,-0.49 451 | -0.18,0.14 452 | 1.73,-1.63 453 | 0.67,-0.73 454 | 0.42,-0.43 455 | 0.43,-0.42 456 | -0.57,0.54 457 | -0.32,0.21 458 | 1.41,-1.21 459 | -0.17,0.19 460 | -0.02,-0.04 461 | -1.64,1.84 462 | 0.34,-0.40 463 | 0.82,-0.83 464 | -0.10,0.01 465 | -1.47,1.46 466 | -1.25,1.32 467 | -0.26,0.11 468 | 0.89,-0.63 469 | -0.10,0.05 470 | 0.26,-0.20 471 | -1.80,1.84 472 | 0.96,-1.08 473 | 0.45,-0.42 474 | 0.39,-0.29 475 | 1.37,-1.41 476 | -1.94,1.94 477 | 2.14,-2.19 478 | 0.45,-0.41 479 | -0.84,0.89 480 | -0.30,0.35 481 | -1.03,1.07 482 | 1.76,-1.87 483 | 1.16,-1.22 484 | -0.48,0.55 485 | -1.29,1.14 486 | -0.16,0.14 487 | 0.23,-0.30 488 | 0.05,-0.02 489 | -0.10,0.13 490 | -0.19,0.29 491 | 1.54,-1.53 492 | 0.28,-0.35 493 | 0.59,-0.60 494 | -1.37,1.25 495 | -0.80,0.80 496 | -1.10,1.08 497 | 0.96,-0.84 498 | 0.50,-0.48 499 | -0.24,0.24 500 | -0.94,1.02 501 | -0.51,0.34 502 | 0.33,-0.17 503 | -0.10,0.26 504 | -1.63,1.58 505 | -0.72,0.84 506 | -0.42,0.36 507 | 0.37,-0.47 508 | -1.58,1.65 509 | -0.32,0.25 510 | -1.50,1.38 511 | -0.14,0.22 512 | -1.83,1.68 513 | -2.60,2.58 514 | -0.10,0.10 515 | 0.98,-0.99 516 | -0.31,0.26 517 | -0.98,1.18 518 | 0.13,-0.15 519 | -1.35,1.24 520 | -0.61,0.63 521 | 0.06,-0.14 522 | 0.90,-0.72 523 | -1.54,1.75 524 | -0.72,0.67 525 | 0.48,-0.58 526 | 0.50,-0.65 527 | -0.21,0.33 528 | -1.57,1.43 529 | -1.37,1.35 530 | -0.35,0.42 531 | -0.20,0.30 532 | -1.08,1.10 533 | 0.64,-0.48 534 | -1.80,1.80 535 | -1.60,1.54 536 | -0.38,0.17 537 | -0.30,0.16 538 | -0.15,0.18 539 | 0.95,-0.89 540 | 0.45,-0.63 541 | -1.68,1.57 542 | -0.55,0.69 543 | 0.17,-0.02 544 | 1.52,-1.52 545 | 2.08,-2.22 546 | 1.31,-1.33 547 | 0.38,-0.26 548 | -0.01,0.09 549 | -1.66,1.71 550 | -0.30,0.18 551 | -0.96,0.98 552 | -0.93,0.80 553 | -0.79,0.82 554 | 1.00,-1.04 555 | -1.02,0.96 556 | -0.35,0.40 557 | 0.78,-0.81 558 | -0.92,1.02 559 | -3.23,3.26 560 | 0.34,-0.27 561 | 0.45,-0.65 562 | 0.14,-0.31 563 | -1.68,1.71 564 | -0.81,0.73 565 | -0.05,0.01 566 | -1.14,0.91 567 | 1.86,-1.87 568 | -0.40,0.46 569 | -0.26,0.54 570 | -1.59,1.59 571 | 0.86,-1.08 572 | 0.72,-0.78 573 | 0.49,-0.52 574 | 0.89,-0.98 575 | -1.20,1.36 576 | 0.02,0.00 577 | 0.32,-0.38 578 | -0.88,0.73 579 | -0.00,-0.10 580 | -1.98,2.10 581 | -1.25,1.23 582 | 2.27,-2.32 583 | 1.14,-1.06 584 | 0.26,-0.29 585 | -0.98,1.04 586 | 0.53,-0.28 587 | -1.00,0.87 588 | 0.56,-0.58 589 | -1.01,1.17 590 | 0.69,-0.60 591 | 1.02,-1.05 592 | 0.61,-0.75 593 | 0.51,-0.31 594 | 0.10,-0.12 595 | 0.53,-0.44 596 | -1.50,1.40 597 | 1.59,-1.58 598 | -0.48,0.69 599 | -0.40,0.56 600 | -0.36,0.48 601 | -0.97,0.79 602 | -1.40,1.46 603 | 1.86,-1.87 604 | 1.09,-1.05 605 | -0.73,0.67 606 | 1.13,-1.34 607 | 1.04,-0.89 608 | -0.02,-0.11 609 | 0.15,-0.27 610 | -0.75,0.65 611 | 1.47,-1.29 612 | -1.15,1.29 613 | -0.25,0.39 614 | 1.04,-1.05 615 | -2.89,2.89 616 | 0.55,-0.44 617 | 0.55,-0.33 618 | 0.95,-0.95 619 | -0.61,0.74 620 | -0.15,0.23 621 | -0.93,0.91 622 | -0.54,0.63 623 | -0.78,0.95 624 | -0.41,0.41 625 | -1.35,1.19 626 | 1.82,-1.71 627 | 0.25,-0.19 628 | -1.08,1.18 629 | -0.31,0.21 630 | -0.92,1.00 631 | 0.95,-1.05 632 | 2.00,-1.85 633 | -1.70,1.79 634 | -0.60,0.53 635 | 0.74,-0.60 636 | -0.18,0.09 637 | -0.20,0.33 638 | 0.65,-0.60 639 | -2.14,2.09 640 | -1.35,1.43 641 | -1.01,0.84 642 | 1.10,-0.95 643 | -0.31,0.25 644 | 1.13,-1.25 645 | -1.03,0.88 646 | 1.25,-1.33 647 | -0.19,0.21 648 | -0.90,0.89 649 | 1.01,-0.94 650 | -1.34,1.33 651 | -1.23,1.09 652 | 1.50,-1.56 653 | 0.44,-0.38 654 | -1.01,1.08 655 | 0.69,-0.62 656 | 0.78,-0.78 657 | -0.21,0.14 658 | 0.11,-0.14 659 | 0.99,-0.88 660 | -0.91,1.02 661 | 2.67,-2.51 662 | -1.40,1.30 663 | -0.11,0.27 664 | 0.38,-0.33 665 | 0.49,-0.45 666 | -0.18,-0.01 667 | 0.77,-0.74 668 | 2.62,-2.69 669 | -0.54,0.40 670 | -0.56,0.78 671 | -1.97,1.85 672 | 0.31,-0.31 673 | 0.08,-0.08 674 | -0.37,0.61 675 | -0.41,0.32 676 | 1.65,-1.57 677 | 1.54,-1.72 678 | -0.09,0.01 679 | -0.80,0.80 680 | -0.70,0.55 681 | -1.41,1.23 682 | 0.03,0.02 683 | 0.25,-0.24 684 | -0.85,0.85 685 | -0.04,0.23 686 | 0.05,-0.16 687 | -0.54,0.49 688 | -0.60,0.35 689 | -0.91,0.71 690 | -0.34,0.32 691 | 0.41,-0.44 692 | -1.38,1.23 693 | 0.89,-0.83 694 | -0.19,0.16 695 | 0.06,-0.18 696 | 1.74,-1.56 697 | 0.36,-0.43 698 | -2.22,2.15 699 | 0.93,-0.93 700 | 0.86,-0.96 701 | -0.70,0.76 702 | -0.99,1.08 703 | -0.47,0.47 704 | -0.72,0.59 705 | -0.18,0.31 706 | 1.34,-1.31 707 | 0.12,0.01 708 | 1.20,-1.20 709 | 0.78,-0.69 710 | 1.38,-1.33 711 | -0.06,-0.02 712 | 1.95,-2.10 713 | -0.42,0.46 714 | -0.11,0.04 715 | 0.70,-0.82 716 | 1.05,-1.01 717 | -1.09,1.04 718 | 1.36,-1.46 719 | 0.10,0.20 720 | -1.18,1.23 721 | -1.91,1.95 722 | 0.68,-0.84 723 | -2.36,2.43 724 | 1.31,-1.28 725 | -0.97,1.04 726 | 0.18,-0.07 727 | -0.77,0.94 728 | 0.68,-0.63 729 | -0.85,0.83 730 | 1.93,-1.71 731 | -0.91,0.86 732 | 1.53,-1.75 733 | -0.79,0.91 734 | 1.56,-1.62 735 | -0.00,-0.06 736 | 1.01,-0.90 737 | 1.16,-1.15 738 | 0.73,-0.70 739 | 1.05,-0.88 740 | 1.54,-1.60 741 | 0.05,-0.06 742 | -1.16,1.12 743 | -0.62,0.59 744 | 0.63,-0.70 745 | 0.11,-0.01 746 | -0.42,0.49 747 | 0.34,-0.20 748 | 0.16,-0.31 749 | -0.11,0.15 750 | 0.97,-0.84 751 | 0.03,-0.10 752 | 1.19,-1.19 753 | 0.30,-0.21 754 | -0.05,0.02 755 | -0.39,0.22 756 | 1.05,-1.08 757 | -1.45,1.52 758 | -0.25,0.29 759 | 1.98,-2.06 760 | 0.82,-0.73 761 | -0.71,0.62 762 | -0.13,0.16 763 | -0.73,0.54 764 | -0.95,0.96 765 | 0.42,-0.46 766 | 1.76,-1.73 767 | -1.30,1.11 768 | 0.40,-0.51 769 | 1.85,-1.81 770 | 0.73,-0.68 771 | -1.68,1.75 772 | 0.61,-0.56 773 | 1.80,-1.69 774 | -1.20,1.31 775 | -0.55,0.48 776 | -1.27,1.20 777 | -1.24,1.17 778 | 0.24,-0.22 779 | 0.60,-0.69 780 | 0.91,-0.95 781 | -0.30,0.40 782 | -0.44,0.43 783 | 0.03,0.03 784 | 1.44,-1.27 785 | 0.55,-0.48 786 | -0.33,0.25 787 | -0.18,0.10 788 | 1.08,-1.11 789 | -1.17,1.12 790 | -1.36,1.37 791 | 1.82,-1.76 792 | -0.40,0.37 793 | -0.44,0.45 794 | 0.29,-0.23 795 | 0.13,-0.07 796 | -1.84,1.90 797 | 0.10,-0.22 798 | -0.62,0.60 799 | 0.95,-1.04 800 | 0.75,-0.85 801 | -0.28,0.33 802 | -0.05,-0.11 803 | -1.39,1.44 804 | -0.39,0.45 805 | 1.82,-1.84 806 | -1.66,1.61 807 | 0.29,-0.27 808 | 0.34,-0.52 809 | -0.13,0.04 810 | -0.07,0.07 811 | -0.41,0.27 812 | -1.00,1.00 813 | 0.32,-0.20 814 | 0.90,-0.90 815 | -0.20,0.06 816 | -0.75,0.80 817 | 0.85,-0.74 818 | -0.34,0.39 819 | 0.30,-0.26 820 | -0.28,0.36 821 | 0.31,-0.31 822 | 0.45,-0.52 823 | 1.17,-1.21 824 | -0.11,0.12 825 | 0.67,-0.80 826 | -0.90,0.78 827 | 0.01,-0.15 828 | -0.21,0.32 829 | 1.40,-1.59 830 | 0.74,-0.78 831 | 1.27,-1.20 832 | -0.40,0.30 833 | -0.59,0.54 834 | -0.81,0.86 835 | -0.30,0.16 836 | -0.20,0.28 837 | 0.56,-0.39 838 | 0.15,-0.26 839 | -0.93,1.06 840 | 0.90,-0.92 841 | 1.17,-1.40 842 | 0.84,-0.59 843 | 2.71,-2.90 844 | -0.19,0.16 845 | 0.93,-0.96 846 | -0.02,-0.12 847 | -0.88,0.81 848 | 0.45,-0.47 849 | 1.29,-1.43 850 | 1.16,-1.05 851 | 1.55,-1.60 852 | 0.27,-0.33 853 | 0.48,-0.58 854 | 1.19,-1.12 855 | 1.09,-1.11 856 | 0.38,-0.39 857 | -0.64,0.62 858 | 1.74,-1.52 859 | 0.98,-1.15 860 | -0.30,0.41 861 | 0.35,-0.50 862 | -0.59,0.60 863 | -0.69,0.57 864 | -1.36,1.25 865 | -0.56,0.64 866 | 0.18,-0.21 867 | -0.16,0.02 868 | 0.63,-0.65 869 | -0.74,0.68 870 | -0.44,0.50 871 | 0.68,-0.74 872 | 1.69,-1.66 873 | -1.66,1.77 874 | 0.21,-0.18 875 | 0.22,-0.32 876 | -0.14,0.29 877 | -0.63,0.55 878 | -0.81,0.83 879 | -0.37,0.37 880 | -1.54,1.61 881 | -0.29,0.41 882 | 1.78,-1.77 883 | -1.10,1.07 884 | -0.73,0.63 885 | 0.35,-0.13 886 | -0.05,0.09 887 | -0.07,0.02 888 | 2.76,-2.80 889 | -0.37,0.44 890 | 0.14,-0.08 891 | -0.12,-0.03 892 | 0.24,-0.30 893 | -1.42,1.48 894 | 0.90,-0.96 895 | -1.25,1.20 896 | -2.54,2.49 897 | -0.48,0.57 898 | 0.96,-1.05 899 | -3.54,3.44 900 | -0.02,0.14 901 | -0.24,0.06 902 | -2.45,2.44 903 | 1.61,-1.64 904 | 1.45,-1.50 905 | -0.71,0.68 906 | 1.13,-1.08 907 | 0.45,-0.31 908 | -0.25,0.26 909 | -0.52,0.56 910 | -0.32,0.36 911 | -0.82,1.04 912 | 0.67,-0.64 913 | 0.78,-0.80 914 | 1.35,-1.35 915 | 0.99,-1.00 916 | -0.30,0.28 917 | -0.14,0.38 918 | 0.10,-0.07 919 | -0.57,0.42 920 | 0.45,-0.56 921 | 1.53,-1.45 922 | 0.41,-0.55 923 | 0.22,-0.38 924 | 1.26,-1.31 925 | 0.65,-0.64 926 | 1.28,-1.20 927 | -0.73,0.74 928 | 0.11,-0.04 929 | -1.82,1.85 930 | -0.40,0.22 931 | 0.55,-0.66 932 | -1.16,0.97 933 | -0.19,0.12 934 | -2.06,1.95 935 | -0.75,0.84 936 | 0.68,-0.61 937 | 0.24,-0.28 938 | -0.69,0.73 939 | 1.00,-1.08 940 | -0.58,0.77 941 | -0.48,0.34 942 | -0.81,0.95 943 | -0.76,0.87 944 | -0.34,0.32 945 | 1.06,-1.11 946 | 0.95,-0.86 947 | 1.41,-1.47 948 | 0.19,-0.22 949 | 0.58,-0.51 950 | 0.19,-0.09 951 | 0.26,-0.31 952 | 0.69,-0.81 953 | 1.53,-1.58 954 | 0.69,-0.73 955 | 0.19,-0.20 956 | -0.79,0.95 957 | 0.42,-0.36 958 | 0.69,-0.87 959 | 0.87,-1.02 960 | 0.73,-0.80 961 | 0.47,-0.34 962 | 0.40,-0.46 963 | -0.63,0.49 964 | -0.70,0.77 965 | -1.54,1.49 966 | 1.78,-1.94 967 | 0.21,-0.36 968 | 0.38,-0.46 969 | 1.53,-1.54 970 | 0.98,-1.06 971 | -0.17,0.07 972 | -0.89,0.91 973 | -0.96,0.89 974 | 0.05,0.00 975 | 0.09,-0.14 976 | -1.69,1.60 977 | -1.30,1.37 978 | 2.09,-2.08 979 | -0.10,0.02 980 | 1.50,-1.24 981 | -0.65,0.73 982 | -0.98,0.90 983 | -0.35,0.25 984 | -0.71,0.72 985 | 0.88,-0.80 986 | -2.00,2.02 987 | -1.43,1.38 988 | 0.81,-0.81 989 | -0.75,0.78 990 | 0.18,-0.39 991 | 0.08,-0.19 992 | -0.12,0.27 993 | 0.38,-0.52 994 | -2.43,2.34 995 | -0.02,-0.01 996 | 0.00,-0.14 997 | -0.78,0.94 998 | 0.51,-0.38 999 | -0.28,0.27 1000 | -0.56,0.41 1001 | -------------------------------------------------------------------------------- /spark-linear-regression.py: -------------------------------------------------------------------------------- 1 | from __future__ import print_function 2 | 3 | from pyspark.ml.regression import LinearRegression 4 | 5 | from pyspark.sql import SparkSession 6 | from pyspark.ml.linalg import Vectors 7 | 8 | if __name__ == "__main__": 9 | 10 | # Create a SparkSession (Note, the config section is only for Windows!) 11 | spark = SparkSession.builder.config("spark.sql.warehouse.dir", "file:///C:/temp").appName("LinearRegression").getOrCreate() 12 | 13 | # Load up our data and convert it to the format MLLib expects. 14 | inputLines = spark.sparkContext.textFile("regression.txt") 15 | data = inputLines.map(lambda x: x.split(",")).map(lambda x: (float(x[0]), Vectors.dense(float(x[1])))) 16 | 17 | # Convert this RDD to a DataFrame 18 | colNames = ["label", "features"] 19 | df = data.toDF(colNames) 20 | 21 | # Note, there are lots of cases where you can avoid going from an RDD to a DataFrame. 22 | # Perhaps you're importing data from a real database. Or you are using structured streaming 23 | # to get your data. 24 | 25 | # Let's split our data into training data and testing data 26 | trainTest = df.randomSplit([0.5, 0.5]) 27 | trainingDF = trainTest[0] 28 | testDF = trainTest[1] 29 | 30 | # Now create our linear regression model 31 | lir = LinearRegression(maxIter=10, regParam=0.3, elasticNetParam=0.8) 32 | 33 | # Train the model using our training data 34 | model = lir.fit(trainingDF) 35 | 36 | # Now see if we can predict values in our test data. 37 | # Generate predictions using our linear regression model for all features in our 38 | # test dataframe: 39 | fullPredictions = model.transform(testDF).cache() 40 | 41 | # Extract the predictions and the "known" correct labels. 42 | predictions = fullPredictions.select("prediction").rdd.map(lambda x: x[0]) 43 | labels = fullPredictions.select("label").rdd.map(lambda x: x[0]) 44 | 45 | # Zip them together 46 | predictionAndLabel = predictions.zip(labels).collect() 47 | 48 | # Print out the predicted and actual values for each point 49 | for prediction in predictionAndLabel: 50 | print(prediction) 51 | 52 | 53 | # Stop the session 54 | spark.stop() 55 | -------------------------------------------------------------------------------- /spark-sql.py: -------------------------------------------------------------------------------- 1 | from pyspark.sql import SparkSession 2 | from pyspark.sql import Row 3 | 4 | import collections 5 | 6 | # Create a SparkSession (Note, the config section is only for Windows!) 7 | spark = SparkSession.builder.config("spark.sql.warehouse.dir", "file:///C:/temp").appName("SparkSQL").getOrCreate() 8 | 9 | def mapper(line): 10 | fields = line.split(',') 11 | return Row(ID=int(fields[0]), name=str(fields[1].encode("utf-8")), age=int(fields[2]), numFriends=int(fields[3])) 12 | 13 | lines = spark.sparkContext.textFile("fakefriends.csv") 14 | people = lines.map(mapper) 15 | 16 | # Infer the schema, and register the DataFrame as a table. 17 | schemaPeople = spark.createDataFrame(people).cache() 18 | schemaPeople.createOrReplaceTempView("people") 19 | 20 | # SQL can be run over DataFrames that have been registered as a table. 21 | teenagers = spark.sql("SELECT * FROM people WHERE age >= 13 AND age <= 19") 22 | 23 | # The results of SQL queries are RDDs and support all the normal RDD operations. 24 | for teen in teenagers.collect(): 25 | print(teen) 26 | 27 | # We can also use functions instead of SQL queries: 28 | schemaPeople.groupBy("age").count().orderBy("age").show() 29 | 30 | spark.stop() 31 | -------------------------------------------------------------------------------- /total-spent-by-customer-sorted.py: -------------------------------------------------------------------------------- 1 | from pyspark import SparkConf, SparkContext 2 | 3 | conf = SparkConf().setMaster("local").setAppName("SpendByCustomerSorted") 4 | sc = SparkContext(conf = conf) 5 | 6 | def extractCustomerPricePairs(line): 7 | fields = line.split(',') 8 | return (int(fields[0]), float(fields[2])) 9 | 10 | input = sc.textFile("file:///sparkcourse/customer-orders.csv") 11 | mappedInput = input.map(extractCustomerPricePairs) 12 | totalByCustomer = mappedInput.reduceByKey(lambda x, y: x + y) 13 | 14 | #Changed for Python 3 compatibility: 15 | #flipped = totalByCustomer.map(lambda (x,y):(y,x)) 16 | flipped = totalByCustomer.map(lambda x: (x[1], x[0])) 17 | 18 | totalByCustomerSorted = flipped.sortByKey() 19 | 20 | results = totalByCustomerSorted.collect(); 21 | for result in results: 22 | print(result) 23 | -------------------------------------------------------------------------------- /total-spent-by-customer.py: -------------------------------------------------------------------------------- 1 | from pyspark import SparkConf, SparkContext 2 | 3 | conf = SparkConf().setMaster("local").setAppName("SpendByCustomer") 4 | sc = SparkContext(conf = conf) 5 | 6 | def extractCustomerPricePairs(line): 7 | fields = line.split(',') 8 | return (int(fields[0]), float(fields[2])) 9 | 10 | input = sc.textFile("file:///sparkcourse/customer-orders.csv") 11 | mappedInput = input.map(extractCustomerPricePairs) 12 | totalByCustomer = mappedInput.reduceByKey(lambda x, y: x + y) 13 | 14 | results = totalByCustomer.collect(); 15 | for result in results: 16 | print(result) 17 | -------------------------------------------------------------------------------- /word-count-better-sorted.py: -------------------------------------------------------------------------------- 1 | import re 2 | from pyspark import SparkConf, SparkContext 3 | 4 | def normalizeWords(text): 5 | return re.compile(r'\W+', re.UNICODE).split(text.lower()) 6 | 7 | conf = SparkConf().setMaster("local").setAppName("WordCount") 8 | sc = SparkContext(conf = conf) 9 | 10 | input = sc.textFile("file:///sparkcourse/book.txt") 11 | words = input.flatMap(normalizeWords) 12 | 13 | wordCounts = words.map(lambda x: (x, 1)).reduceByKey(lambda x, y: x + y) 14 | wordCountsSorted = wordCounts.map(lambda x: (x[1], x[0])).sortByKey() 15 | results = wordCountsSorted.collect() 16 | 17 | for result in results: 18 | count = str(result[0]) 19 | word = result[1].encode('ascii', 'ignore') 20 | if (word): 21 | print(word.decode() + ":\t\t" + count) 22 | -------------------------------------------------------------------------------- /word-count-better.py: -------------------------------------------------------------------------------- 1 | import re 2 | from pyspark import SparkConf, SparkContext 3 | 4 | def normalizeWords(text): 5 | return re.compile(r'\W+', re.UNICODE).split(text.lower()) 6 | 7 | conf = SparkConf().setMaster("local").setAppName("WordCount") 8 | sc = SparkContext(conf = conf) 9 | 10 | input = sc.textFile("file:///sparkcourse/book.txt") 11 | words = input.flatMap(normalizeWords) 12 | wordCounts = words.countByValue() 13 | 14 | for word, count in wordCounts.items(): 15 | cleanWord = word.encode('ascii', 'ignore') 16 | if (cleanWord): 17 | print(cleanWord.decode() + " " + str(count)) 18 | -------------------------------------------------------------------------------- /word-count.py: -------------------------------------------------------------------------------- 1 | from pyspark import SparkConf, SparkContext 2 | 3 | conf = SparkConf().setMaster("local").setAppName("WordCount") 4 | sc = SparkContext(conf = conf) 5 | 6 | input = sc.textFile("file:///sparkcourse/book.txt") 7 | words = input.flatMap(lambda x: x.split()) 8 | wordCounts = words.countByValue() 9 | 10 | for word, count in wordCounts.items(): 11 | cleanWord = word.encode('ascii', 'ignore') 12 | if (cleanWord): 13 | print(cleanWord.decode() + " " + str(count)) 14 | --------------------------------------------------------------------------------