So che Spark è completamente integrato con Scala. Il suo caso d'uso è specifico per grandi set di dati. Quali altri strumenti hanno un buon supporto Scala? Scala è più adatta per set di dati più grandi? O è adatto anche per set di dati più piccoli?
So che Spark è completamente integrato con Scala. Il suo caso d'uso è specifico per grandi set di dati. Quali altri strumenti hanno un buon supporto Scala? Scala è più adatta per set di dati più grandi? O è adatto anche per set di dati più piccoli?
Risposte:
Scala funziona con dati piccoli e grandi, ma la sua creazione e sviluppo è motivata dalla necessità di qualcosa di scalabile. Scala è l'acronimo di "Scalable Language" .
Scala è un linguaggio di programmazione funzionale che gira su jvm . La parte "funzionale" di questo è una differenza fondamentale nel linguaggio che ti fa pensare diversamente alla programmazione. Se ti piace questo modo di pensare, ti consente di lavorare rapidamente con piccoli dati. Che ti piaccia o no, i linguaggi funzionali sono fondamentalmente più facili da ridimensionare in modo massiccio. Il pezzo jvm è anche importante perché il jvm è praticamente ovunque e, quindi, il codice Scala può essere eseguito praticamente ovunque. (Nota: ci sono molti altri linguaggi scritti su jvm e molti altri linguaggi di programmazione funzionale , e le lingue oltre Scala appaiono in entrambi gli elenchi.)
Questo discorso offre una buona panoramica della motivazione alla base di Scala.
Come hai detto, Spark (elaborazione batch distribuibile meglio con algoritmi iterativi rispetto alla sua controparte) è un grande. Con Spark arrivano le sue librerie Mllib per l'apprendimento automatico e GraphX per i grafici. Come menzionato da Erik Allik e Tris Nefzger, esistono Akka e Factorie . C'è anche Play .
In generale, non posso dire se c'è un caso d'uso specifico per cui stai scavando (in tal caso, fai una parte della tua domanda), o vuoi solo un sondaggio sugli strumenti dei big data e capisci che Scala è un po 'e vuoi per iniziare lì.
ScalaNLP è una suite di librerie di apprendimento automatico e di calcolo numerico con supporto per le attività comuni di elaborazione del linguaggio naturale. http://www.scalanlp.org/
Ecco un elenco recentemente aggiornato di librerie Scala per la scienza dei dati: https://www.datasciencecentral.com/profiles/blogs/top-15-scala-libraries-for-data-science-in-2018-1
Dall'ascolto alle presentazioni di Martin Odersky, il creatore di Scala, è particolarmente adatto per la costruzione di sistemi altamente scalabili sfruttando costrutti di programmazione funzionale in combinazione con l'orientamento agli oggetti e la sintassi flelxible. È anche utile per lo sviluppo di piccoli sistemi e la prototipazione rapida perché richiede meno righe di codice rispetto ad alcune altre lingue e ha una modalità interattiva per un feedback rapido. Un notevole quadro di Scala è Akka che utilizza il modello di attore del calcolo simultaneo. Molte delle presentazioni di Odersky sono su YouTube e c'è un elenco di strumenti implementati con Scala su wiki.scala-lang.org.
Un punto implicito è che gli strumenti e i framework scritti in Scala hanno intrinsecamente l'integrazione di Scala e di solito un'API Scala. Quindi altre API possono essere aggiunte per supportare altre lingue a partire da Java poiché Scala è già integrata e di fatto dipende in modo critico da Java. Se uno strumento o un framework non è scritto in Scala, è improbabile che offra supporto a Scala. Ecco perché in risposta alla tua domanda ho indicato strumenti e strutture scritte in Scala e Spark ne è un esempio. Tuttavia, Scala ha attualmente una quota minore del mercato, ma il suo tasso di adozione è in crescita e l'alto tasso di crescita di Spark lo migliorerà. Il motivo per cui utilizzo Scala è perché l'API di Spark per Scala è più ricca delle API Java e Python.
Le ragioni principali per cui preferisco Scala in generale sono perché è molto più espressivo di Java perché consente e facilita l'uso di funzioni come oggetti e valori mantenendo la modularità orientata agli oggetti, che consente lo sviluppo di programmi complessi e corretti con molto meno codice di Java che Avevo preferito a causa dell'uso diffuso, della chiarezza e della documentazione eccellente.
Scala è adatto sia per applicazioni di data science grandi che piccole. Considera DynaML se sei interessato a provare una libreria di apprendimento automatico che si integra bene con Apache Spark. È ancora agli inizi, per così dire in termini di numero di modelli offerti, ma lo compensa con un'API di machine learning ampia e flessibile.
Per dare un'occhiata ad alcuni esempi di casi d'uso prendere in considerazione (di più da dove proviene)
Disclaimer: sono l'autore di DynaML