Записки программиста, обо всем и ни о чем. Но, наверное, больше профессионального.

2017-05-02

Big Data Analysis with Scala and Spark

Big Data Analysis with Scala and Spark
https://www.coursera.org/learn/scala-spark-big-data/home/info

Ну вот, finally, закончил я последний курс специализации
Functional Programming in Scala Specialization
https://www.coursera.org/specializations/scala
Сдал сегодня последнюю домашку.

К сожалению, этот курс меня сильно разочаровал.
Настолько поверхностный и бесполезный оказался, что я пожалел времени, потраченного на прослушивание лекций.
По сравнению с предыдущими курсами этой специализации, где показывали всякое интересное
и давали массу кода, глядя на который можно было научиться полезному, здесь
кода минимум, все интересное есть в документации на Spark и научиться чему-либо может
только полный нуб.
Ощущение, что курс сляпали на отъебись. Очень жаль.

Отдельного упоминания заслуживает домашка, на которую я потратил непозволительно много времени.

Продолжая славную традицию "мы дадим вам задание, но не дадим тестов", тут задание местами
сформулировано так, что без телепата не разобраться.
А лично я застрял, как обычно, на простейшей вещи: в их тестах округление округляет в меньшую сторону,
а я использовал в большую (x.toInt vs x.round.toInt)

Пока не написал тест, не смог понять, где ошибка.
Чтобы написать тест, пришлось распечатывать входные данные, засылаемые грейдером курса.
Бляди, сэр.


def getResult(lang: String, scores: String, sc: SparkContext) = {
    def langIdx(lang: String): Int = {
      StackOverflow.langs.indexOf(lang)
    }
    val langCoord = StackOverflow.langSpread * langIdx(lang)
    val iScores = scores.split(",").map(x => x.toInt)

    val vectors = sc.parallelize(iScores.map((langCoord, _)))
    val means = Array((langCoord, iScores.sum / iScores.size))
    StackOverflow.clusterResults(means, vectors)
}

test("clusterResults - Groovy-19") {
    val lang = "Groovy"
    val scores = "23,15,13,13,76,26,16,27"
    val sc = StackOverflow.sc
    val results = getResult(lang, scores, sc)
    StackOverflow.printResults(results)
    assert(results.exists(_ == ("Groovy",100,8,19)))
}

test("clusterResults - PHP-34") {
    val lang = "PHP"
    val scores = "22,22,57,37,30,30,83,44,28,25,37,26,22,26,24,24,22,39,37,49,75,25,37,46,46,40,133,30,29,40,41,22,24,29,33,24,65,55,42,30,22,25,45,61,23,35,67,34,94,24,71,59,50,36,36,36,36,25,39,51,22,49,161,24,54,54,24,176,28,36,28,23,27,26,63,137,104,23,44,22,24,26,35,32,175,50,36,25,27,23,27,32,40,46,32,32,61,22,78,23,22,28,62,62,36,63,81,38,73,23,27,89,51,24,30,28,22,23,33,27,27,55,23,30,29,59,102,46,96,42,37,36,39,194,48,22,24,33,27,48,64,24,28,23,141,31,57,50,23,23,22,108,84,37,22,105,26,29,34,22"
    val sc = StackOverflow.sc
    val results = getResult(lang, scores, sc)
    StackOverflow.printResults(results)
    assert(results.exists(_ == ("PHP",100,160,34)))
}



original post http://vasnake.blogspot.com/2017/05/big-data-analysis-with-scala-and-spark.html

Архив блога

Ярлыки

linux (241) python (191) citation (186) web-develop (170) gov.ru (159) video (124) бытовуха (115) sysadm (100) GIS (97) Zope(Plone) (88) бурчалки (84) Book (83) programming (82) грабли (77) Fun (76) development (73) windsurfing (72) Microsoft (64) hiload (62) internet provider (57) opensource (57) security (57) опыт (55) movie (52) Wisdom (51) ML (47) driving (45) hardware (45) language (45) money (42) JS (41) curse (40) bigdata (39) DBMS (38) ArcGIS (34) history (31) PDA (30) howto (30) holyday (29) Google (27) Oracle (27) tourism (27) virtbox (27) health (26) vacation (24) AI (23) Autodesk (23) SQL (23) Java (22) humor (22) knowledge (22) translate (20) CSS (19) cheatsheet (19) hack (19) Apache (16) Manager (15) web-browser (15) Никонов (15) functional programming (14) happiness (14) music (14) todo (14) PHP (13) course (13) scala (13) weapon (13) HTTP. Apache (12) Klaipeda (12) SSH (12) frameworks (12) hero (12) im (12) settings (12) HTML (11) SciTE (11) USA (11) crypto (11) game (11) map (11) HTTPD (9) ODF (9) купи/продай (9) Photo (8) benchmark (8) documentation (8) 3D (7) CS (7) DNS (7) NoSQL (7) cloud (7) django (7) gun (7) matroska (7) telephony (7) Microsoft Office (6) VCS (6) bluetooth (6) pidgin (6) proxy (6) Donald Knuth (5) ETL (5) NVIDIA (5) Palanga (5) REST (5) bash (5) flash (5) keyboard (5) price (5) samba (5) CGI (4) LISP (4) RoR (4) cache (4) car (4) display (4) holywar (4) nginx (4) pistol (4) spark (4) xml (4) Лебедев (4) IDE (3) IE8 (3) J2EE (3) NTFS (3) RDP (3) holiday (3) mount (3) Гоблин (3) кухня (3) урюк (3) AMQP (2) ERP (2) IE7 (2) NAS (2) Naudoc (2) PDF (2) address (2) air (2) british (2) coffee (2) fitness (2) font (2) ftp (2) fuckup (2) messaging (2) notify (2) sharepoint (2) ssl/tls (2) stardict (2) tests (2) tunnel (2) udev (2) APT (1) CRUD (1) Canyonlands (1) Cyprus (1) DVDShrink (1) Jabber (1) K9Copy (1) Matlab (1) Portugal (1) VBA (1) WD My Book (1) autoit (1) bike (1) cannabis (1) chat (1) concurrent (1) dbf (1) ext4 (1) idioten (1) join (1) krusader (1) license (1) life (1) migration (1) mindmap (1) navitel (1) pneumatic weapon (1) quiz (1) regexp (1) robot (1) science (1) serialization (1) spatial (1) tie (1) vim (1) Науру (1) крысы (1) налоги (1) пианино (1)