Melhor resposta
Sugiro que você leia as versões mais antigas do código do Spark.
Considere a versão 0.5 lançado em 2012 apache / spark Naquela época, o Spark tinha apenas cerca de 70 arquivos de código-fonte e todos esses arquivos eram pequenos. Dê uma olhada no código-fonte do RDD aqui: apache / spark Tudo é tão simples e conciso.
Além disso, observe que a arquitetura do Spark não tem t mudou dramaticamente desde então. Os desenvolvedores acabaram de adicionar muito tratamento de erros, otimizações e integração com tecnologias externas como Yarn ou Kafka.
Quando você entende como o Spark funcionou em 2012, não seria um problema entender como o Spark funciona hoje.
Além disso, sugiro que você leia estas notas: JerryLead / SparkInternals . Eles fornecem uma visão geral da arquitetura interna do Spark.
Resposta
Para pegar carona na resposta de Noam Ben-Ami – SE você for um usuário de ponta a ponta, o Spark pode ser bem exaustivo e difícil de aprender.
Mesmo que você conheça Bash, Python e SQL, isso é apenas a ponta do iceberg de usar o Spark. Se você está indo de ponta a ponta ao Spark em vez de um analista de script Python / SQL, ele tem muitos componentes que são, por si só, grandes tópicos para aprender.
Claro, você pode usar o Spark localmente (seu laptop) e sem Hadoop, mas no “mundo real” você não usará o Spark assim. É bom aprender um pouco da sintaxe, mas não se engane, ninguém vai contratá-lo para fazer “Spark” nesse contexto (* trocadilho intencional).
Todo o motivo para usar o Spark é o desempenho e você está sentado em cima de um sistema de arquivos distribuído, também conhecido como “Big Data”. Isso significa que quando você escreve o código para seus trabalhos do Spark, você entende coisas como partições, nós, serialização, o JVM, vcores, executores, memória, memória e disco, embaralhamentos, arquivos compactados, formatos colunares (parquet) e semelhantes ao longo do forma de mover dados de, digamos, S3 por meio de RDDs, DataFrames, DataSets (somente Java / Scala) e Spark SQL para seu conjunto de dados final.
Para mim, isso é muito parecido com quando alguém diria que sabe “ Excel ”e você perguntaria a eles se eles poderiam escrever uma macro básica do zero e obter aquela aparência de cervo nos faróis.
Uma possível aventura no Spark incluiria:
- Construindo seu cluster Hadoop (nós, memória, instâncias EC2, etc)
- configuração YARN (nós, núcleos, instâncias, executores, gerenciamento de memória, drivers, memória extra, transmissão, na memória e assim por diante gerenciamento de disco, etc) – qualquer um desses pode travar / encerrar seus trabalhos e você não dá um passo adiante, mesmo com cargas triviais de dados, se algum deles não funcionar, nós tudo com seus dados.
- Documentação do Spark RDDs
- Documentação do Spark DataFrames
- Documentação do Spark SQL
- Inevitavelmente, você escreverá código em # é 3–5 que exporá os problemas de # 2.
- Neste ponto, você provavelmente estará depurando, no mínimo, o código Java e, se estiver usando Python, erros de gateway py4J para problemas de tipo de dados com Python e objetos de dados de streaming.
Muitas pessoas podem escrever funções / métodos em RDDs, DataFrames e Spark SQL em meros minutos e se tiverem alguma experiência com Python e SQL – talvez até engolfar RDDs, DataFrames e documentação SQL em alguns dias – mas quando seu trabalho do Spark for interrompido por uma transmissão, executor, tarefa ou erro de memória – nada disso fará diferença. Você está vestindo a roupa de mergulho Spark e mergulhando fundo na barriga do Spark [Java].