
Apache Spark
O Apache Spark é uma ferramenta popular de computação distribuída para conjuntos de dados tabulares que está se tornando um nome dominante na análise de Big Data atualmente.
Dask
Geralmente, o Dask é menor e mais leve que o Spark. Isso significa que ele tem menos recursos e, em vez disso, é usado em conjunto com outras bibliotecas, particularmente aquelas no ecossistema numérico do Python. Ele combina com bibliotecas como Pandas ou Scikit-Learn para obter funcionalidades de alto nível.
Línguagem
O Spark é escrito em Scala com algum suporte para Python e R. Interopera bem com outro código da JVM.
O Dask é escrito em Python e realmente suporta apenas Python. Interopera bem com C / C ++ / Fortran / LLVM ou outro código compilado nativamente vinculado por meio de Python.
Ecossistema
O Spark é um projeto completo que inspirou seu próprio ecossistema. Ele se integra bem a muitos outros projetos Apache.
O Dask é um componente do ecossistema Python maior. Ele combina e aprimora outras bibliotecas como NumPy, Pandas e Scikit-Learn.
Idade e Confiança
O Spark é mais antigo (desde 2010) e se tornou uma ferramenta dominante e confiável no mundo corporativo de Big Data.
O Dask é mais jovem (desde 2014) e é uma extensão da bem confiável pilha NumPy / Pandas / Scikit-learn / Jupyter.
Escopo
O Spark está mais focado nas operações tradicionais de business inteligence, como SQL e aprendizado de máquina leve.
O Dask é aplicado de maneira mais geral tanto em aplicativos de BI quanto em várias situações científicas e personalizadas.
Design Interno
Spark é de mais alto nivel, fornece boas otimizações de alto nível em cálculos aplicados uniformemente, mas sem flexibilidade para algoritmos mais complexos ou sistemas ad-hoc. É fundamentalmente uma extensão do paradigma Map-Shuffle-Reduce.
Dask é de possui uma interface de mais baixo nível, portanto, carece de otimizações de alto nível, mas é capaz de implementar algoritmos mais sofisticados e criar sistemas sob medida mais complexos. É fundamentalmente baseado no agendamento de tarefas genérico.
Escalabilidade
Ambos são altamente escaláveis
APIs DataFrames
O Spark DataFrame possui sua própria API e modelo de memória. Também implementa um grande subconjunto da linguagem SQL. O Spark inclui um otimizador de consultas de alto nível para consultas complexas.
O Dask DataFrame reutiliza a API do Pandas e o modelo de memória. Ele não implementa nem o SQL nem um otimizador de consultas. É capaz de fazer acesso aleatório, operações eficientes de séries temporais e outras operações indexadas no estilo Pandas.
Aprendizado de Máquina
O Spark MLLib é um projeto coeso, com suporte para operações comuns fáceis de implementar com o sistema de estilo Map-Shuffle-Reduce do Spark. As pessoas que consideram o MLLib também podem considerar outras bibliotecas de aprendizado de máquina baseadas em JVM, como H2O, que podem ter melhor desempenho.
O Dask depende e interopera com as bibliotecas existentes, como o Scikit-Learn e o XGBoost. Estes podem ter um desempenho mais familiar ou superior, mas geralmente resultam em um todo menos coeso. Veja o projeto dask-ml para integrações.
Matrizes
Razões pelas quais você pode escolher o Spark
- Você prefere o Scala ou a linguagem SQL
- Você tem principalmente infraestrutura JVM e sistemas legados
- Você deseja uma solução estabelecida e confiável para os negócios
- Você está fazendo análises de negócios principalmente com algum aprendizado de máquina leve
- Você deseja uma solução tudo em um
Razões pelas quais você pode escolher Dask
- Você prefere código nativo ou Python ou possui um grande código legado
Conclusão
Apesar de todas as vantagens do apache spark alguns projetos podem ser beneficiar da flexibilidade do dask e do fato dele integrar com importantes bibliotecas de machine learning e análise de dados como: NumPy, Pandas Scikit-learn etc... sem dúvida é mais uma importante tecnologia para ficar de olho e considerar em seus projetos de big data
Espero que este conteúdo tenha te ajudado
Obrigado!
Referência: Dask - https://docs.dask.org/en/latest/spark.html