portaldacalheta.pt
  • Legfontosabb
  • Ui Design
  • Mobil Tervezés
  • Folyamat És Eszközök
  • Mérnöki Menedzsment
Háttér

Hogyan használtam az Apache Sparkot és a Dockert egy Hackathon-on, hogy időjárás-alkalmazást építsek



Két korábbi cikkemben bemutattam a hallgatóságot Apache Spark és Dokkmunkás . Eljött az idő, amikor bemutattam egy teljesen működőképes alkalmazást, amely magában foglalja a fent említett mindkét technológiát.

A motiváció „adat formájában esett az égből”, és az IBM által szervezett hackathon váltotta ki. Sparkathon's A cél az időjárási adatok és az Analytics elemzése volt az Apache Spark for IBM Bluemix számára az időjárással kapcsolatos mobil alkalmazások létrehozásához.



Az IBM erősen befektetés a Sparkba , és nemrégiben megvette a Az Időjárás-csatorna . Ennek következtében ez az esemény tökéletesnek tűnik a nyilvánosság számára.



Ihlet

Panaszkodott valaha a tartózkodási helyének időjárására, volt-e valamilyen tervezett szabadideje és elköltendő pénze, de nem tudta hol menni? Ha a válasz igen, akkor nagyon szeretné Tökéletes időjárás kb.



Kép: Használjon eseteket az alkalmazáshoz.

Csak annak bemutatására, hogy az alkalmazást hogyan lehet használni, íme néhány felhasználási eset:



  1. Van egy gyereked, akivel megígérted, hogy sárkányt fogsz repülni ez héten, de teljesen szélcsendes, ahol élsz, és nem akarod megszegni a szavad.
  2. Szeles és esős helyen élsz, mint én (Edinburgh, Skócia), és melegséget szeretnél érezni a bőrödön, és mindenképpen nem eső.
  3. Késztetésed van egy hóember építésére, és addig nem pihensz, amíg nem teljesíted.
  4. Szeretne horgászni, és ezúttal nagyon szeretne fogni valamit.

Mit csinál

A szolgáltatás mögött rejlő ötlet nagyon egyszerű. Először határozza meg, hogy a tökéletes időjárás mit jelent az Ön számára az adott pillanatban. Jelenleg szűrhet hőmérséklet, szélsebesség, csapadék típusa és a csapadék valószínűsége szerint, az alábbi képernyőképen látható módon. Ezután a szolgáltatás elvégzi a többit, és a legjobban illő úticélokat mutatják be Önnek. Az eredményeket a tökéletes napok száma szerint rendezzük, azok, amelyek megfelelnek az eredeti lekérdezésnek, az egyes városok esetében megtalálhatók és az első ötre korlátozódnak. A tökéletes napokat más háttérrel is megjelölik.

konvertálja a stringet time javascriptté

Nézzük meg, hogyan használhatnánk a szolgáltatást az előző szakaszban meghatározott használati esetekre.



  1. Állítsa a szélét 16 és 32 km / h közé, ideális a sárkányrepüléshez, kis eső eséllyel és kényelmes hőmérséklet mellett.
  2. Állítsa a min hőmérsékletet elég melegnek az Ön számára, állítsa az eső esélyét 0% -ra.
  3. Állítsa a hőmérsékletet 0 C körüli és alatti értékre, válassza a havazást csapadék típusnak, és a csapadék esélye magas legyen.
  4. Állítsa be a szélsebességet 16 km / h alá, kevés esőt és felhőt, mivel el akarja kerülni, hogy ne legyen túl napos, és a halak mélyebben a vízbe kerüljenek, kényelmes hőmérsékletűek legyenek.

Ha szeretné, könnyedén megnézheti, hogyan juthat el a választott úti célhoz, mivel az alkalmazás integrálva van a Momondo utazási keresési szolgáltatással.

Hogyan építettem

Alapvetően a külső utazási keresési szolgáltatás kivételével minden az IBM Bluemix platformon belül fut.



Az IBM ingyenes próbaverziót ajánlott fel a hackathon összes résztvevőjének, így nem kellett aggódnom, hogy hol futtassam az alkalmazást.

Lássuk, hogyan áramlanak az adatok az alkalmazásban, és hogyan állnak össze az architektúra diagramban bemutatott összetevők.



A Play alkalmazás egy Docker-tároló belsejében található. Egyik szolgáltatása képes felvenni a kapcsolatot az Meteorológiai Szolgálattal és letölteni a 10 napos előrejelzést a Cloudant-ba. A letöltést követő lépésben a Spark beolvassa a felhőalapú időjárási adatokat a Cloudantból, feldolgozza és visszatárolja a Cloudantba a Play alkalmazás gyors és egyszerű eléréséhez.

Amikor a felhasználók az alkalmazás főoldalára navigálnak, megjelenik a különféle vezérlőket tartalmazó űrlap a tökéletes időjárás meghatározásához. Bevitelüket elküldik a háttérprogramnak, amely a tökéletes napokat tartalmazó városokra vonatkozóan kérdezi a Cloudant. Ezután újabb lekérdezés készül az előrejelzés mind a tíz napjára az előző lekérdezésben visszaadott városokra vonatkozóan. Az elért eredményeket bemutatjuk a felhasználóknak, és a cellák az egyes városok napi időjárási viszonyait mutatják. Minden város utolsó cellája összekapcsolja az utazási szolgáltatást. Ha rákattint, a felhasználók a Momondo webhelyére kerülnek, és a járatkeresési űrlap előre kitölti az úti célt és az utazás dátumát. Ha a felhasználó korábban használta a szolgáltatást (és cookie-t tárolt a böngészőjében), akkor az utazók eredete és mennyisége is előre kitölthető. Természetesen ezen az űrlapon a mezők megváltoztathatók. Például kipróbálhat különböző utazási dátumokat a jobb viteldíj keresése érdekében.



Nagyjából így épül fel az alkalmazás. A következő szakaszok az alkatrészek néhány részletével foglalkoznak.

Kép: Az időjárás kb.

Szikra és betekintés az időjáráshoz

A projekt első szakaszát annak kitalálásával töltötték, hogy miként működik a Weather API és a többi Bluemix szolgáltatás, majd ezt követte az időjárási adatok kezdeti feltárása a Spark segítségével. Ez megértette velem az adatmodell működését és alkalmazhatóságát az alkalmazásban.

Az alkalmazás alkalmazásában a következő Weather REST API végpontok közül csak az elsőt használják:

GET /v2/forecast/daily/10day - Weather Standard 10-day Daily Forecast GET /v2/forecast/hourly/24hour - Weather Standard Hourly Forecast GET /v2/observations/current - Current Weather Observation GET /v2/observations/timeseries/24hour - Time-Series Observation

A végpontot az összes érdekes város időjárás-előrejelzéséhez kérdezzük le a geokód paraméter, amely a kérdéses hely szélességi és hosszúsági fokát veszi fel.

A szolgáltatás jellege miatt a Weather API-nak küldött kérések száma korrelál a támogatott városok számával. Figyelembe vettem az Insights for Weather Service ingyenes szintjét, amely napi 500 hívást jelentett, és úgy döntöttem, hogy a bemutató céljából biztonságos, ötven turisztikai típusú városba megyek Európában. Ez lehetővé tette, hogy naponta több hívást is indítsak minden városban, és kezeljem a sikertelen kéréseket anélkül, hogy kockáztatnám az API használatának jogát. El kellene kezdenem fizetni, hogy elegendő kérésem legyen a világ legtöbb városára.

A projekt végső célja az lenne, hogy a világ összes városának (~ 50 000) Spark-ropogós időjárási adatait megszorozzuk tíznapos előrejelzési adatokkal, és naponta többször elvégezzük, hogy az előrejelzések a lehető legpontosabbak legyenek.

Az összes Spark kód a Jupyter jegyzetfüzet. Eddig nincs más lehetőség a Spark munkák végrehajtására. A nyers időjárási adatokat a Cloudant DB olvassa, feldolgozza és visszaírja.

Felhős NoSQL DB

Röviden: nagyon kellemesnek találtam a Cloudant NoSQL DB-vel való munkát. Könnyen használható, és jó böngészőalapú felhasználói felülettel rendelkezik. Nincs ilyen illesztőprogram, de egyszerű REST API-val rendelkezik, és egyszerű volt a HTTP-n keresztüli interakció.

Azonban a Bluemix Spark tartalmaz egy Cloudant Data Sources API-t, amelyet fel lehet használni a Cloudant olvasására és írására alacsony szintű hívások nélkül. Érdemes megjegyezni, hogy nem lehet új adatbázist létrehozni a Cloudantban a Sparkból, ezért azt előzetesen létre kell hozni, például a webes felhasználói felület segítségével.

Play Framework

A webes alkalmazás Scala nyelven íródott. Nagyon egyszerű. A vezérlő egyoldalas alkalmazást szolgál ki az AngularJS és a Bootstrap szolgáltatással, a szolgáltatás pedig kölcsönhatásba lép a Weather API-val és a Cloudant-tal.

hogyan lehet megváltoztatni egy osztályváltozót a pythonban

Egy érdekes kihívás, amellyel szembesültem, közvetlenül kapcsolódik az IBM Container Service-hez. Az volt a szándékom, hogy az alkalmazást a 80-as porton futtassam, így felhasználóbarát. A Bluemix-ben azonban nem találtam semmilyen módot a Docker port továbbításának használatára, és a külső 80-as port leképezésére a Play alkalmazás Docker 9000 belső portjához. A megoldásom a következő volt: gyökér a tároló belsejében (nem ajánlott gyakorlat) és a Play alkalmazásának szerkesztéséhez.conf:

# Production port play.server.http.port = '80'

Dokkmunkás

A Docker nagyon hasznos volt, különösen a Bluemix-be történő telepítés idején. Nem kellett semmiféle ismeretem a Cloud Foundry Apps-ről, nem kellett aggódnom a Scala build-ek miatt vagy bármi más miatt. Csak lökhettem a Docker képemet, és láttam, ahogy fut.

A Docker kép létrehozásához Typesafe-t használtam Docker bővítmény , így nem is kellett egy megfelelő Dockerfile.

Csak néhány parancsra van szükség ahhoz, hogy az alkalmazás rövid kezdeti konfiguráció után a felhőben fusson:

# log in to IBM Bluemix cf login cf ic login # create the image locally sbt docker:publishLocal # rename it docker tag -f my-perfect-weather:1.0-SNAPSHOT registry.ng.bluemix.net/radek1st/my-perfect-weather:1.0 # push it docker push registry.ng.bluemix.net/radek1st/my-perfect-weather:1.0 # and run it cf ic run --name my-perfect-weather -p 80 -m 2048 registry.ng.bluemix.net/radek1st/my-perfect-weather:1.0

Érdemes megjegyezni, hogy a Bluemix Container Service futtatásuk előtt elvégzi a képek biztonsági résének felmérését. Annak ellenére, hogy az alkalmazásomnak nem igazán volt értelme, mégis javítanom kellett /etc/login.defs a szülő képének, így futtatható. Itt van a Dockerfile ha érdekel.

Kihívások, amelyekbe belefutottam

Mivel a Spark még mindig nagyon friss kiegészítője az IBM Bluemix-nek, bizonyos korlátai vannak. Jelenleg a kód csak egy notebook részeként hajtható végre, így nincs mód a futások ütemezésére. Ez meglehetősen nagy felfedezés volt a hackathonra szánt idő végén. Mit jelent ez Tökéletes időjárás az, hogy a bemutatott időjárási napok lassan elavulnak, ha a Spark notebookot nem futtatják újra manuálisan . Remélem, hogy az IBM azonnal megoldja ezt a hiányosságot.

Az Insights for Weather API dokumentációjában egy kis pontatlanságra is bukkantam, amely felszínre került, miután észrevettem néhány problémát a megjelenített eredményekkel kapcsolatban. A csapadék típusa , az egyetlen elvárt érték az volt eső és hó , de találtam egy harmadik értéket is csapadék . Az időjárási viszonyokból úgy tűnik, hogy az esőt havazással jelzi, így az alkalmazás egyszerűsége érdekében hónak tekintik.

Teljesítmények, amelyekre büszke vagyok

Kép: A Docker és a Spark használata az időjárás kb.

gondolom Tökéletes időjárás nagyon jó ötlet, és büszke vagyok arra, hogy nagyon gyorsan meg tudtam valósítani, összekeverve a különféle technológiákat. Mindazonáltal ez egy hack, sok laza vége van, de ami a legfontosabb, hogy működik!

Amit tanultam

Elég sokat tanultam e rövid projekt során. Új voltam az IBM Bluemix-ben, így ez önmagában is kaland volt.

Soha nem hallottam még a Cloudant DB-ről, de a MongoDB némi tapasztalatával az átmenet meglehetősen könnyű volt.

Azt is megtudtam, hogy nem szabad egy frontenden dolgozni. Szívemben háttérfejlesztő vagyok, a tehetség, hogy a dolgok szépnek tűnjenek , így a Bootstrap-tal és a CSS-sel végzett munka keresés-másolás-beillesztés-módosítás gyakorlat volt. Nagyon köszönöm a feleségemnek, hogy segített a tervezésben, a látványban, a bemutatóban és az általános tanácsokban.

Mi következik a My Perfect Weather-vel

Szeretnék még további időjárási szabályokat hozzáadni, és a közeljövőben kiterjeszteni a világ legnagyobb részére, vagy legalábbis egész Európára. Ha több város / időjárási nap felel meg a kritériumoknak, akkor a legtökéletesebb napok bemutatása is nagyobb kihívást jelent, így lehetőség van a Spark MLlib és a Spark Streaming használatára a felhasználók munkameneteiből származó adatokhoz.

Remélem, hogy az IBM hamarosan hozzáadja a Spark-feladatok ütemezésének lehetőségét, így a szolgáltatás teljesen automatizálhatóvá válhat.

Következtetés

Megtekintheti saját maga számára az alkalmazást számítógépén, okostelefonján vagy táblagépén, ha navigál a következőre: myperfectweather.eu .

Ha csúcsot szeretne elérni a kódnál, akkor az a Github .

A My Perfect Weather az IBM Sparkathon versengő projektjeként jött létre, közel 600 résztvevővel. Elnyerte a fődíjat és a rajongói kedvencet. Nézze meg a projekt oldal ha szeretne többet megtudni.

UI vs UX - Fedezze fel az alapvető különbségeket (Infographic)

Ui Design

UI vs UX - Fedezze fel az alapvető különbségeket (Infographic)
eCommerce UX - Alapvető tervezési stratégiák és alapelvek

eCommerce UX - Alapvető tervezési stratégiák és alapelvek

Márka Tervezés

Népszerű Bejegyzések
Az ételkészlet-ipar blúza: Hogyan állhat helyre a kék kötény a rossz pillanatból?
Az ételkészlet-ipar blúza: Hogyan állhat helyre a kék kötény a rossz pillanatból?
Mi az a Kubernetes? Útmutató a konténerezéshez és a telepítéshez
Mi az a Kubernetes? Útmutató a konténerezéshez és a telepítéshez
A Radical Candor keretrendszer használata a hatékony műszaki menedzsmenthez
A Radical Candor keretrendszer használata a hatékony műszaki menedzsmenthez
A távoli munka életmódjának trendjei
A távoli munka életmódjának trendjei
10 A webbiztonság leggyakoribb biztonsági rései
10 A webbiztonság leggyakoribb biztonsági rései
 
3D grafika: WebGL oktatóanyag
3D grafika: WebGL oktatóanyag
Hogyan lehet megjósolni a jövőt: A bizonytalanság hatásainak enyhítése
Hogyan lehet megjósolni a jövőt: A bizonytalanság hatásainak enyhítése
Hibrid teljesítmény: csapkodási előnyök és előnyök
Hibrid teljesítmény: csapkodási előnyök és előnyök
Yasett Acurana bolíviai fejlesztő elnyeri a hatodik ApeeScape ösztöndíjat
Yasett Acurana bolíviai fejlesztő elnyeri a hatodik ApeeScape ösztöndíjat
Szögletes alkatrészek 101 - áttekintés
Szögletes alkatrészek 101 - áttekintés
Népszerű Bejegyzések
  • hogyan kell beállítani az sdr
  • A webalkalmazások 10 legfontosabb sebezhetősége
  • A mobilwebes alkalmazások általában html5 és java használatával készülnek.
  • hogyan lehet memóriaszivárgást találni a Java-ban
  • a pszichológiában gestalt elveket használnak a magyarázatra
Kategóriák
  • Ui Design
  • Mobil Tervezés
  • Folyamat És Eszközök
  • Mérnöki Menedzsment
  • © 2022 | Minden Jog Fenntartva

    portaldacalheta.pt