Ferramentas de ciência de dados usando Scala

15

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?

sheldonkreger
fonte
2
Você também deseja saber sobre os kits de ferramentas de aprendizado de máquina, como, por exemplo, FACTORIE?
Erik Kaplun
Isso parece relevante para minha pergunta, fique à vontade para compartilhar mais.
sheldonkreger

Respostas:

11

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

TheGrimmScientist
fonte
4

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.

Tris Nefzger
fonte
11
Essas são ótimas informações sobre o Scala em geral, mas estou procurando informações sobre ferramentas ou estruturas específicas de ciência de dados que tenham integração com o Scala e por que o Scala é uma boa linguagem para essas ferramentas usarem.
Sheldonkreger
0

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)

  1. Identificação do sistema - Abott Power Plant

Disclaimer: Eu sou o autor do DynaML

Mandar Chandorkar
fonte
Se este for seu projeto, observe sua afiliação.
Sean Owen