Wiem, że Spark jest w pełni zintegrowany ze Scalą. Jest to przypadek użycia specjalnie dla dużych zestawów danych. Jakie inne narzędzia mają dobre wsparcie dla Scali? Czy Scala najlepiej nadaje się do większych zestawów danych? A może nadaje się również do mniejszych zestawów danych?
scalability
scala
sheldonkreger
źródło
źródło
Odpowiedzi:
Re: rozmiar danych
Krótka odpowiedź
Scala działa zarówno na małych, jak i dużych danych, ale ich tworzenie i rozwój jest motywowany potrzebą czegoś skalowalnego. Scala to skrót od „Scalable Language” .
Długa odpowiedź
Scala to funkcjonalny język programowania, który działa na JVM . „Funkcjonalna” część tego jest podstawową różnicą w języku, która sprawia, że myślisz inaczej o programowaniu. Jeśli podoba ci się ten sposób myślenia, pozwala on szybko pracować z małymi danymi. Niezależnie od tego, czy ci się to podoba, czy nie, języki funkcjonalne są zasadniczo łatwiejsze do masowego skalowania. Kawałek jvm jest również ważny, ponieważ jvm jest zasadniczo wszędzie, a zatem kod Scala może działać w zasadzie wszędzie. (Zauważ, że jest wiele innych języków napisanych na Jvm i wiele innych funkcjonalnych języków programowania , a języki poza Scalą pojawiają się na obu listach.)
Ta rozmowa daje dobry przegląd motywacji stojących za Scalą.
Re: inne narzędzia, które mają dobre wsparcie Scala:
Jak wspomniałeś, Spark (dystrybuowalne przetwarzanie wsadowe lepiej w algorytmach iteracyjnych niż jego odpowiednik) jest duży. Wraz z Spark dostarczane są biblioteki Mllib do uczenia maszynowego i GraphX do wykresów. Jak wspomnieli Erik Allik i Tris Nefzger, Akka i Factorie istnieją . Istnieje również Play .
Zasadniczo nie mogę powiedzieć, czy istnieje konkretny przypadek użycia, dla którego kopiesz (jeśli tak, uczyń go częścią swojego pytania), lub po prostu chcę przeprowadzić ankietę na temat narzędzi do dużych zbiorów danych i zdarzyć się, że znasz trochę Scalę i chcesz zacząć od tego.
źródło
ScalaNLP to pakiet bibliotek do uczenia maszynowego i obliczeń numerycznych z obsługą typowych zadań przetwarzania języka naturalnego. http://www.scalanlp.org/
Oto nowo zaktualizowana lista bibliotek Scala do nauki danych: https://www.datasciencecentral.com/profiles/blogs/top-15-scala-libraries-for-data-science-in-2018-1
źródło
Po wysłuchaniu prezentacji Martina Odersky'ego, twórcy Scali, jest on szczególnie odpowiedni do budowania wysoce skalowalnych systemów poprzez wykorzystanie funkcjonalnych konstrukcji programistycznych w połączeniu z orientacją obiektową i elastyczną składnią. Jest także przydatny do opracowywania małych systemów i szybkiego prototypowania, ponieważ zajmuje mniej linii kodu niż niektóre inne języki i ma tryb interaktywny do szybkiego przesyłania informacji zwrotnych. Jednym z godnych uwagi frameworków Scala jest Akka, która wykorzystuje model aktorów obliczeń współbieżnych. Wiele prezentacji Odersky znajduje się na YouTube, a na wiki.scala-lang.org znajduje się lista narzędzi zaimplementowanych w Scali.
Domniemany jest fakt, że narzędzia i frameworki napisane w Scali z natury mają integrację Scali i zwykle Scala API. Następnie można dodać inne interfejsy API w celu obsługi innych języków zaczynających się na Javie, ponieważ Scala jest już zintegrowana i faktycznie zależy od Javy. Jeśli narzędzie lub środowisko nie jest napisane w Scali, jest mało prawdopodobne, aby oferowało jakiekolwiek wsparcie dla Scali. Dlatego w odpowiedzi na twoje pytanie wskazałem narzędzia i ramy napisane w Scali, a Spark jest jednym z przykładów. Jednak Scala ma obecnie niewielki udział w rynku, ale jego wskaźnik adopcji rośnie, a wysoka stopa wzrostu Spark to zwiększy. Powodem, dla którego używam Scali jest to, że API Spark dla Scali jest bogatsze niż API Java i Python.
Głównym powodem, dla którego wolę Scalę, jest to, że jest znacznie bardziej wyrazista niż Java, ponieważ umożliwia i ułatwia korzystanie z funkcji jako obiektów i wartości, przy zachowaniu modułowej orientacji obiektowej, co umożliwia tworzenie złożonych i poprawnych programów o znacznie mniejszym kodzie niż Java, które Wolałem ze względu na szerokie zastosowanie, przejrzystość i doskonałą dokumentację.
źródło
Scala nadaje się zarówno do dużych, jak i małych aplikacji do analizy danych. Rozważ DynaML, jeśli chcesz wypróbować bibliotekę uczenia maszynowego, która dobrze integruje się z Apache Spark. Można powiedzieć, że jest jeszcze w powijakach pod względem liczby oferowanych modeli, ale nadrabia to szerokim i elastycznym interfejsem API uczenia maszynowego.
Aby zapoznać się z przykładowymi przypadkami użycia, rozważ (więcej skąd to pochodzi)
Oświadczenie: Jestem autorem DynaML
źródło