Eu sei que o Spark está totalmente integrado ao Scala. Seu caso de uso é especificamente para grandes conjuntos de dados. Quais outras ferramentas têm bom suporte ao Scala? O Scala é mais adequado para conjuntos de dados maiores? Ou também é adequado para conjuntos de dados menores?
scalability
scala
sheldonkreger
fonte
fonte
Respostas:
Re: tamanho dos dados
A resposta curta
O Scala funciona para dados pequenos e grandes, mas sua criação e desenvolvimento são motivados pela necessidade de algo escalável. Scala é um acrônimo para "Língua escalável" .
A resposta longa
Scala é uma linguagem de programação funcional que roda na jvm . A parte 'funcional' disso é uma diferença fundamental na linguagem que faz você pensar de maneira diferente sobre programação. Se você gosta desse modo de pensar, permite trabalhar rapidamente com pequenos dados. Quer você goste ou não, as linguagens funcionais são fundamentalmente mais fáceis de serem dimensionadas em massa. A parte da jvm também é importante porque a jvm está basicamente em toda parte e, portanto, o código Scala pode ser executado basicamente em toda parte. (Observe que existem muitas outras linguagens escritas na jvm e muitas outras linguagens de programação funcionais , e linguagens além do Scala aparecem nas duas listas.)
Essa palestra fornece uma boa visão geral da motivação por trás do Scala.
Re: outras ferramentas que têm um bom suporte Scala:
Como você mencionou, o Spark (processamento distribuível em lote melhor em algoritmos iterativos do que seu equivalente) é grande. Com o Spark, vêm suas bibliotecas Mllib para aprendizado de máquina e GraphX para gráficos. Como mencionado por Erik Allik e Tris Nefzger, Akka e Factorie existem. Há também Play .
Geralmente, não sei dizer se há um caso de uso específico para o qual você está procurando (se for o caso, faça parte da sua pergunta) ou apenas deseja uma pesquisa sobre ferramentas de big data e conheça um pouco o Scala. para começar por aí.
fonte
O ScalaNLP é um conjunto de bibliotecas de aprendizado de máquina e computação numérica com suporte para tarefas comuns de processamento de linguagem natural. http://www.scalanlp.org/
Aqui está uma lista recém-atualizada de bibliotecas scala para ciência de dados: https://www.datasciencecentral.com/profiles/blogs/top-15-scala-libraries-for-data-science-in-2018-1
fonte
Desde ouvir as apresentações de Martin Odersky, o criador do Scala, é especialmente adequado para a construção de sistemas altamente escalonáveis, aproveitando as construções de programação funcional em conjunto com a orientação a objetos e a sintaxe flelxível. Também é útil para o desenvolvimento de pequenos sistemas e prototipagem rápida, porque requer menos linhas de código do que outras línguas e possui um modo interativo para obter feedback rápido. Uma estrutura notável do Scala é o Akka, que usa o modelo de ator da computação simultânea. Muitas das apresentações de Odersky estão no YouTube e há uma lista de ferramentas implementadas com o Scala em wiki.scala-lang.org.
Um ponto implícito é que as ferramentas e estruturas escritas no Scala possuem inerentemente integração com o Scala e geralmente uma API do Scala. Em seguida, outras APIs podem ser adicionadas para oferecer suporte a outras linguagens começando com Java, pois o Scala já está integrado e, de fato, depende criticamente do Java. Se uma ferramenta ou estrutura não estiver escrita no Scala, é improvável que ele ofereça suporte ao Scala. É por isso que, em resposta à sua pergunta, apontei para ferramentas e estruturas escritas em Scala e Spark é um exemplo. No entanto, atualmente a Scala possui uma participação menor no mercado, mas sua taxa de adoção está crescendo e a alta taxa de crescimento da Spark aumentará isso. O motivo pelo qual eu uso o Scala é porque a API do Spark para Scala é mais rica que as APIs Java e Python.
As principais razões pelas quais prefiro o Scala geralmente são porque são muito mais expressivas que o Java, porque permitem e facilitam o uso de funções como objetos e valores, mantendo a modularidade orientada a objetos, o que permite o desenvolvimento de programas complexos e corretos com muito menos código que o Java, que Eu preferia por causa do uso generalizado, clareza e excelente documentação.
fonte
O Scala é adequado para aplicativos de ciência de dados grandes e pequenos. Considere o DynaML se você estiver interessado em experimentar uma biblioteca de aprendizado de máquina que se integre bem ao Apache Spark. Ainda está em sua infância, por assim dizer, em termos de número de modelos oferecidos, mas é compensado por uma API de aprendizado de máquina ampla e flexível.
Para examinar alguns casos de uso de amostra, considere (mais de onde isso veio)
Disclaimer: Eu sou o autor do DynaML
fonte