Faísca python vs scala

No meu primeiro curso de treinamento Apache Spark (em

edX

), Recebi um arquivo vagrant da VM. Como incluía todos os itens necessários, o Hadoop não era uma preocupação. A codificação do curso foi em Python, com a qual eu estava familiarizado. Então, eu estava confortável em codificar para o curso.

Mais tarde, para um projeto, planejei usar o Spark. Planejei usar o Spark com Python. O desenvolvimento da “plataforma (?)” Necessária do Hadoop no meu computador estava se tornando um pesadelo.

Nesse ponto, eu li que o Spark with Scala apresenta menos problemas em relação ao Hadoop. Então, passei cerca de três dias para aprender e começar a usar o Scala.

Agora estou gostando do Spark com Scala. Definitivamente, eu recomendaria o Scala for Spark, principalmente se o Hadoop estiver criando um gargalo.

Bem, a língua nativa do Spark é Scala. Você obterá um desempenho mais rápido se usar o Scala. Dito isto, se você não conhece o Scala, vale a pena aprender um pouco apenas com o Spark? Isso depende de quanto da sua carga de trabalho futura envolve o Spark. Se você prevê que trabalhará muito com o Spark no futuro, então eu diria - APRENDA! Por um lado, você terá mais flexibilidade com o Spark se estiver trabalhando no Scala. (O benefício salarial de US $ 15 mil que acompanha as habilidades do Scala também não será prejudicial). Mas, se este é apenas um projeto único para você, por que se preocupar! Basta codificar o trabalho em Python e concluir com ele. Se por acaso você estiver interessado em aprender o Spark e o Scala, o Simplilearn oferece um ótimo curso que geralmente é oferecido com desconto.

Treinamento em certificação Apache Spark e Scala

Não vi nas respostas algumas vantagens do Scala sobre o Python:

  • Scala tem tipos estáticos fortes. Os erros são gerados no estágio de compilação. Facilita seu processo de desenvolvimento, especialmente em grandes projetos.
  • O Scala é baseado na JVM, portanto é nativo do Hadoop. O Hadoop é importante porque o Spark foi criado no topo do sistema de arquivos HDFS do Hadoop. O Python interage muito com os serviços do Hadoop, portanto os desenvolvedores precisam usar bibliotecas de terceiros (como hadoopy). O Scala interage com o Hadoop por meio da API nativa do Hadoop em Java. É por isso que é muito fácil escrever aplicativos nativos do Hadoop no Scala.

Python é muito bom se você quiser jogar com o Spark. Mas se você deseja criar uma solução de produção - Scala é o melhor.

Há mais informações relacionadas a isso:

Publicação de Roman Zykov na Data Science School

  • Desempenho: Scala vence. Python é 10 vezes mais lento que as linguagens JVM. Se o seu código Python chamar apenas as bibliotecas Spark, você estará bem. Mas se o seu código Python processar muito, será mais lento que o equivalente ao Scala.
  • Curva de aprendizado: O Python tem uma pequena vantagem sobre o Scala (estilo funcional) para as tarefas usuais de ciência de dados. Mas Scala é muito amigável, de qualquer maneira. A menos que você comece a usar conceitos avançados de orientação a objetos.
  • Facilidade de uso: Scala vence. O Spark em si é construído no Scala. As coisas são "mais naturais" usando Scala.
  • Bibliotecas: Python possui melhores bibliotecas em ML e NLP, mas elas não são orientadas para Big Data. O Spark MLLib possui menos algoritmos, mas eles são perfeitos para Big Data.

Se você souber o que significa o termo escalabilidade, você definitivamente escolherá SCALA. Scala, como o próprio nome sugere, seu principal objetivo de design é a escalabilidade. Portanto, em diferentes situações de resolução de problemas, o desempenho e a codificação não serão afetados. No Big Data, você precisa lidar com grandes quantidades de dados. O SCALA é linear em complexidade quando o tamanho dos dados aumenta, seu desempenho não diminui (especialmente na estrutura Spark) e também o comprimento do código (isso não se encaixa estritamente no conceito quando a imagem de escalabilidade é exibida, mas definitivamente menos detalhada que o Java). como Java, sugiro fortemente que você vá com o SCALA. Minha visão pessoal diz que nos próximos anos a estrutura SCALA e Big Data with Spark seria a melhor combinação.

Mercado atual, vejo Python é a escolha de muitos, devido à sua ampla disponibilidade e habilidades, também fácil de aprender.

Comecei a trabalhar com o Apache Spark há cerca de 2 meses para um projeto em andamento. Eu acho que Marcin Mejran realmente está certo. Se você realmente deseja usar o Spark no contexto de um sistema distribuído maior, o Scala é realmente o caminho a percorrer. Entre o Akka e o interloop em todos os outros aplicativos da JVM, é difícil argumentar contra.

Dito isto, se você está trabalhando em uma única máquina e quer apenas "começar" com o Spark, o Python é muito mais fácil. Houve toneladas de recursos despejados em uma boa interloop entre Python e Apache Spark para que você não perca uma tonelada. Além disso, com a API de conjuntos de dados e a API de quadros de dados, as preocupações com o desempenho são menos problemáticas. Além disso, você pode usar as bibliotecas Pythons para visualização e outras técnicas de ML.

Eu escolhi o Scala para o meu trabalho, mas acabei procurando idéias no Python Code ao escrever o Spark.

Boa pergunta. Para obter os melhores resultados de seu tempo e esforços, você deve escolher sabiamente qual ferramenta usar. Deixe-me diferenciar claramente o Python e o Scala para ajudá-lo a escolher o correto para sua necessidade.

  1. Desempenho sábio
  2. O uso de linguagem de tipo dinâmico cria trabalho extra para o intérprete em tempo de execução. O tipo de dados deve ser decidido no tempo de execução.

    O Scala usa JVM e, portanto, é 10 vezes mais rápido que o Python.

    Portanto, quando há muito processo a ser feito, você deve usar o Scala em vez do Python.

    2. Simplicidade

    Não há dúvida de que o python é melhor para iniciantes. É a facilidade e o inglês como a sintaxe é a razão de sua popularidade. Por outro lado, com muitos açúcares sintáticos, Scala não é fácil de dominar. portanto, para sistemas simultâneos e escalonáveis, como o Twitter e a nuvem de som, o Python vence.

    3. Concorrência

    Com uma lista de bibliotecas assíncronas e núcleos reativos, o Scala é uma ótima escolha quando você deseja implementar a simultaneidade. O Python não suporta multithreading verdadeiro. No entanto, ele suporta bifurcação de processos pesados. Aqui, apenas um segmento está ativo por vez. Portanto, sempre que um novo código é implantado, mais processos devem ser reiniciados, o que aumenta a sobrecarga de memória. Então é melhor usarmos o Scala nesses casos.

    4. Digite Segurança

    Ouvimos dizer que Python é uma linguagem de tipo dinâmico. Isso significa que você não precisa declarar o

    tipo de dados em python

    ao declarar. Segue o princípio de digitação de pato. "Se parece um pato, deve ser um pato". Embora isso seja fácil para os programadores, ele torna os aplicativos mais lentos. Ao contrário, Scala parece ter um tipo dinâmico, mas está estaticamente. O compilador detectará erros no tempo de compilação.

    Vemos que refatorar o código Scala é mais fácil, enquanto fazer isso no código Python pode criar mais erros do que resolver. Portanto, embora o Python seja uma boa opção para experimentos ad-hoc menores, o Scala se sai melhor em produtos grandes.

    Portanto, é um empate aqui entre Python e Scala

    5. Produtividade e facilidade de uso

    Scala não é tão conciso quanto Python. O Python é um vencedor claro neste caso por sua facilidade de uso e expressividade.

    Então essa foi a comparação de vários fatores. A escolha depende de você e dos requisitos do seu projeto. Leia também:

    Resposta de Sakina Mirza para Python é melhor que R?

    e este blog em

    Python vs Java

    Siga minha conta para ler minhas respostas regulares sobre Data Science.

Python é o vencedor em 2 de 3 fatores. Python é menos detalhado e fácil de aprender linguagem de programação. Por outro lado, o Scala é rápido e oferece acesso a recursos avançados do Spark, porque o Apache Spark está escrito em Scala.

O Apache Spark é uma tecnologia de computação em cluster de alta velocidade, que acelera o processo do software computacional Hadoop. Podemos aprender Python e Scala para o Spark, mas ambos têm seus próprios prós e contras.

Atuação-

O Scala pode ser executado 10 vezes mais rápido que o Python, assim como na JVM. O Scala possui recursos funcionais de alto nível, que podem ajudar a aumentar sua produtividade.

Python é uma linguagem de comparabilidade mais lenta que o Scala, mas fácil de aprender. Para uma lógica intuitiva simples, você pode usar o Python, mas para um desenvolvimento complexo, você deve usar o Scala.

Curvas de Aprendizagem -

A sintaxe do Scala é complexa, não é fácil de dominar. Portanto, muitos programadores de big data precisam ser cautelosos quando estão trabalhando no Scala. Algumas das bibliotecas do Scala são difíceis de definir operadores simbólicos aleatórios que são entendidos pelos iniciantes.

Por outro lado, o Python possui uma sintaxe simples ou uma interface amigável. Qualquer iniciante pode aprender facilmente Python e começar a codificar nele.

Consulte minha resposta anterior -

Resposta de Ayushi Deshmukh para Qual é o melhor em termos de Hadoop / Spark, aprendendo Scala ou Python?

Fácil de usar -

No contexto do Apache Spark, Scala e Python são expressivos. Scala é uma linguagem detalhada e Python é menos detalhado. Python tem sintaxe amigável.

Resposta de Ayushi Deshmukh para Qual idioma é mais usado no Apache Spark, Python ou Scala?

Há muitas outras diferenças, como mencionado na imagem.

Espero que você tenha uma solução.

Não se esqueça de UpVoTe :)

Sim e não.

Se você está apenas começando com o Spark, realmente não importa por onde começar ou com o que começar. Se você já conhece o Python ou o Scala, use isso. Aprenda a escrever programas Spark nessa linguagem e isso certamente o tornará mais rápido em comparação com o aprendizado de uma nova linguagem de programação e Spark.

Mas se você não estiver familiarizado com nenhum deles, eu recomendaria aprender o Scala. Como o próprio Spark foi escrito no Scala, você pode obter um aumento de desempenho usando o Scala (sobre Java). E, em geral, os aplicativos Spark escritos no Scala são sempre mais rápidos que o Python.

Além disso, poucas organizações gostariam de criar seus aplicativos com o Python, especialmente quando o Scala está disponível, que é executado em uma das plataformas altamente otimizadas, a JVM.

Para obter mais informações sobre o Python Vs Scala, veja minha resposta aqui: Resposta do Swaroop para Qual linguagem de programação é boa para dirigir o Hadoop e Spark: Java, Python ou Scala?

Depois de decidir qual idioma você está usando, é hora de começar a aprender o Spark.

Se você escolheu o Scala como seu idioma de escolha, essas respostas mostrarão o caminho para o Spark + Scala

Resposta da Swaroop para Que livro é bom aprender Spark e Scala para iniciantes?

Resposta da Swaroop para É necessário aprender Scala para aprender Spark?

Resposta da Swaroop para Quais são os bons livros ou sites para aprender Apache Spark e Scala?

E, se você escolheu python, não tenho resposta para mostrar o caminho de aprendizado para isso, pois realmente não usei o Python para Spark. Mas, ainda siga as respostas dadas acima. Você pode encontrar algo útil. Leia também: A resposta do Swaroop para Como eu aprendo o Apache Spark?

Boa sorte com a sua viagem.

Atualmente, o Apache Spark suporta linguagens de programação Java, R, Scala e Python, o que acaba dificultando aos desenvolvedores decidirem qual idioma escolher ao trabalhar em um projeto Spark. Depende das habilidades de programação do desenvolvedor, mas de preferência o Scala e o Python se tornaram a linguagem de escolha dos cientistas de dados para trabalhar com o Apache Spark.

Agora, novamente, a grande questão é qual idioma escolher entre essas duas linguagens de programação para aplicativos Spark. A resposta depende completamente dos cenários, conjunto de habilidades, caso de uso e requisitos. Compare os principais recursos da linguagem de programação, verifique qual deles possui uma vantagem nesse campo e escolha o melhor.

atuação

Em termos de desempenho, o Scala é 10 vezes mais rápido que o Python para processamento e análise de dados devido à presença da Java Virtual Machine. Se você deseja usar seus códigos Python no programa em diferentes tarefas de processamento, obviamente os resultados serão mais lentos que o Scala na mesma máquina. Portanto, podemos dizer que o Scala é a melhor escolha sem dúvida, pois oferece melhor desempenho para projetos Apache Spark quando comparado ao Python.

Curva de aprendizado

É mais fácil aprender Python do que Scala para iniciantes e programadores Java, devido às suas bibliotecas padrão e tarefas simples, enquanto a sintaxe do Scala é um pouco difícil. Embora o Python seja comparativamente mais fácil de aprender, mas não é a escolha certa para sistemas simultâneos e altamente escalonáveis, como o Twitter ou o SoundCloud. Portanto, aprender uma linguagem difícil como o Scala não apenas enriquece o conhecimento do programador, mas também otimiza a funcionalidade geral da programação.

Fácil de usar

O Scala tem a vantagem em termos de facilidade de uso, pois o Spark foi construído usando o Scala. Ter bons conhecimentos sobre o Scala ajuda a entender como o Spark funciona e a realizar as tarefas com êxito. Portanto, é mais fácil usar o Scala com Spark do que em qualquer outro idioma.

A escolha do idioma depende puramente do problema a ser resolvido para programação no Big data Apache Spark.

Aprenda informações detalhadas sobre Python e Apache Spark em

Zeolearn

.

Sabemos que as linguagens de programação mais usadas com o Spark são Python e Scala. Mas quando usamos Python e quando usamos Scala?

Para responder a isso, aqui está um pequeno vídeo da Intellipaat, que explica quando usar Python ou Scala com Spark ?. Embora eu recomende que você responda a resposta, para obter uma explicação detalhada.

E também, se você gosta muito de ler, aqui está um blog tutorial incrível que lhe dará uma imagem mais clara de Python vs Scala, para Spark.

Blog do PySpark

Então, deixe-me comparar Python e Scala com alguns parâmetros. Isso tornará as coisas mais claras para você decidir.

  • Velocidade de desempenho - Python é muito mais lento que o Scala quando usado com o Spark. Porém, os programadores podem fazer mais com Python do que com Scala, devido à interface fácil que ele fornece. Por outro lado, o Spark está escrito em Scala. Portanto, ele se integra muito bem ao Scala, tornando-o mais rápido que o Python.
  • Curva de aprendizado - O Python é conhecido por sua sintaxe fácil e por ser uma linguagem de alto nível, facilita o aprendizado. Scala parece uma linguagem bastante convencional, mas tem algumas peculiaridades sintáticas. Isso dificulta o aprendizado de Scala, mas depois que você se apossar dele, verá que ele tem seu próprio benefício.
  • Bibliotecas de ciência de dados e ML - O Python, quando comparado ao Scala, suporta muitas bibliotecas de ciência de dados e aprendizado de máquina. O Scala não possui ferramentas e visualizações locais apropriadas.
  • Complexidade - As APIs do Python consistem em uma interface simples, fácil e abrangente, enquanto que, por outro lado, o Scala é mais detalhado que o Python, dificultando um pouco os desenvolvedores a escrever scripts no Scala for Spark.

Dito isto, “Scala é mais rápido e moderadamente fácil de usar, enquanto o Python é mais lento, mas muito fácil de usar”.

O uso do Scala for Spark também fornece aos usuários os recursos mais recentes do Spark Framework, uma vez que estão disponíveis no Scala pela primeira vez em qualquer outro idioma. A escolha entre Scala e Python, para spark, também depende do tipo de projeto em que você está trabalhando.

Antes de escolher uma linguagem para programação com o Apache Spark, é necessário que você aprenda o Scala ou o Python para se familiarizar com esses recursos.

Comente sua opinião sobre qual idioma você escolheria para programar no Apache Spark.

Se você quer dizer a API, isso depende.

Antes de tudo, o desempenho provavelmente não importará, pois é quase todo o Scala para o Spark e você sempre pode usar mais máquinas para compensar qualquer outra coisa. As curvas de aprendizado podem ser superadas e a API Scala do Spark é bastante simples. A facilidade de uso é um lance honesto e provavelmente o ponto principal a ser considerado.

O Spark é escrito no Scala, portanto, conhecer o Scala permitirá que você entenda e modifique o que o Spark faz internamente. Sem Scala, uma vez que você atinja o que é possível imediatamente, precisa de um novo tipo de RDD? Que pena. A documentação do Spark não é perfeita e, como grande parte do código aberto, o código é a documentação real. Portanto, a menos que você possa entender o Scala, nunca será capaz de realmente entender o que está acontecendo quando você executa algum código.

Dito isto, o Scala não possui a mesma quantidade de bibliotecas e ferramentas de ciência de dados que o Python. Não há boa visualização, não há boas transformações de dados locais, não existem boas ferramentas locais, etc. etc. As pessoas portaram a maior parte das partes principais do R para o Python e há maneiras fáceis de chamar R diretamente do Python . O Scala / Java não teve tanto esforço nessa frente. Há algumas coisas, mas elas não são muito abrangentes ou coesas. Por exemplo, o Databricks parece basear suas ofertas proprietárias no Python, e não no Scala (basicamente um notebook IPython para Spark).

Portanto, se você deseja fazer análises simples a moderadamente complexas usando o Spark, o Python parece ser o caminho. Se você deseja construir sistemas de produção, o Scala é o caminho a seguir. Se você quiser fazer coisas realmente complicadas, use Scala com uma camada final de Python.

Editar: desde então, escrevi uma resposta muito mais abrangente e atualizada com métricas aqui,

Apache Spark: Scala vs. Java vs. Python vs. R vs. SQL

Resposta atualizada em agosto de 2019.

Na minha experiência, no geral, "Não".

  1. O Python pode ser muito mais lento no cluster do que o Scala (alguns dizem que é 2x a 10x mais lento para abstrações de RDD), mas ajuda os cientistas de dados a fazer muito mais. Eles não precisam lidar com a complexidade do Scala e outros problemas relacionados às 101 maneiras diferentes de fazer coisas simples no Scala. A interface do Pyspark é bastante abrangente (felizmente). 99% do tempo em que usei o Spark, usei o Pyspark e minha equipe também usa o Pyspark - e funcionou bem o suficiente para os grandes conjuntos de dados que manipulamos. Nota: Com o Spark 2.x, as diferenças de desempenho entre as APIs baseadas em Python, R e Scala para Spark são mínimas em termos de desempenho.
  2. Legibilidade, manutenção e familiaridade do código são muito melhores com o Python. É mais fácil encontrar, contratar e treinar programadores Python e levá-los a bordo com o PySpark. Acrescente a isso os muitos recursos para aprender o PySpark on-line, e o amplo suporte para a maioria das funções do Spark no PySpark, e a API do Python para Spark é um acéfalo.
  3. O Python vem com algumas bibliotecas conhecidas por análise de dados e estatísticas que são indiscutivelmente mais maduras e testadas com o tempo do que as do Spark ML / MLLib. Alguns exemplos são numpy, pandas, matplotlib, seaborn e scikit-learn. Depois que o Spark é usado para resumir conjuntos de dados ou criar tabelas menores, essas bibliotecas podem ser úteis para tudo, desde aprendizado de máquina até visualização. Portanto, uma abordagem “híbrida” em que usamos o melhor de cada plataforma pode beneficiar os cientistas de dados. As probabilidades são de que, se você tiver um cluster que possa executar o processamento de dados baseado no Spark, poderá acabar visualizando dados ou outras coisas em que o Python é bom, em um nó local.
  4. As bibliotecas de visualização do Python complementam muito bem o Pyspark (e sua falta de bibliotecas), pois nem o Spark nem o Scala têm nada comparável. Para ciência / estatística de dados, a visualização é muito importante e, portanto, existe um valor no uso do Python sobre o Scala. Mais uma opção é o SparkR, que agrada aos usuários de R.
  5. O código Scala leva muito tempo para compilar e, às vezes, o código Scala pode produzir resultados inconsistentes (veja o discurso de Paul Philips em uma das conferências do LinkedIn - Paul foi um usuário / colaborador legítimo e essencial do Scala por cinco anos na Typesafe). Portanto, se você ' Ao escrever qualquer coisa complexa no Scala, como produtos de dados, que você deseja usar as bibliotecas Spark ou Scala para executar, você pode encontrar obstáculos ao desenvolver e compilar em uma equipe considerável. A alternativa, é claro, é ter pessoas que ofendem totalmente a Scala pelo problema que você tem em mente - mas essa não é uma solução sustentável, dada a complexidade da Scala.
  6. Finalmente, a comunidade Scala é muito menos útil para o programador típico do que a comunidade Python, no que diz respeito à maioria das coisas. Embora a base de usuários do Scala tenha se expandido, ela não acompanhou o ritmo da base de usuários do Python a partir de 2019. De fato, muitas equipes estão se afastando do Scala, passando para o Python ou para outras linguagens estaticamente tipadas, como Go ou back para Java. Isso torna o Python uma linguagem mais valiosa para aprender em geral - desde que você tenha experiência em uma linguagem de tipo estaticamente como Java, você deve ficar bem aprendendo Python e não se preocupando muito com o Scala. Espero (se não esperar) que o Scala seja substituído por algo melhor, mas isso é tudo o que parece ter como linguagem de programação funcional convencional no momento.
  7. Gostaria de saber se as APIs do Kotlin chegarão ao Apache Spark. Isso significaria muito esforço de desenvolvimento, e é improvável que o vejamos, porque é melhor focar no Python ou até na Julia para criar wrappers. O Kotlin, no entanto, é um idioma suficientemente limpo e é muito menos complexo que o Scala, apesar da ênfase no desenvolvimento do Android na comunidade desse idioma.

Net-net, parece que a partir de agosto de 2019, todo mundo prefere o PySpark ainda mais fortemente do que antes. E isso não é surpreendente se você acompanha a comunidade de ciência de dados há algum tempo - o Python realmente ganhou força e é uma linguagem altamente eficiente para a ciência de dados, na maioria das vezes.