Narzędzia do analizy danych za pomocą Scali


15

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?


2
Czy chcesz także wiedzieć o zestawach narzędzi do uczenia maszynowego, takich jak np. FACTORIE?
Erik Kaplun

To brzmi dobrze na moje pytanie, zachęcamy do dzielenia się więcej.
sheldonkreger,

Odpowiedzi:


11

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.



4

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ę.


1
To ogólnie dobra informacja o Scali, ale szukam informacji o konkretnych narzędziach do nauki danych lub platformach, które mają integrację Scali, i dlaczego Scala jest dobrym językiem dla tych narzędzi.
sheldonkreger

0

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)

  1. Identyfikacja systemu - elektrownia Abott

Oświadczenie: Jestem autorem DynaML


Jeśli to twój projekt, zwróć uwagę na swoją przynależność.
Sean Owen
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.