Meilleure réponse
Je vous suggère de lire les anciennes versions du code de Spark.
Considérez la version 0.5 publié en 2012 apache / spark À cette époque, Spark ne possédait quenviron 70 fichiers de code source et tous ces fichiers étaient petits. Jetez un œil au code source de RDD ici: apache / spark Tout est si simple et concis.
Notez également que larchitecture de Spark na pas t a radicalement changé depuis. Les développeurs viennent dajouter beaucoup de gestion des erreurs, doptimisations et dintégration avec des technologies externes comme Yarn ou Kafka.
Quand vous comprenez comment Spark a fonctionné en 2012, ce ne serait pas un problème de comprendre comment Spark fonctionne aujourdhui.
De plus, je vous suggère de lire ces notes: JerryLead / SparkInternals . Ils fournissent un aperçu de larchitecture interne de Spark.
Réponse
Pour reprendre la réponse de Noam Ben-Ami – SI, vous êtes un utilisateur de bout en bout, Spark peut être assez exhaustif et difficile à apprendre.
Même si vous connaissez Bash, Python et SQL, ce nest que la pointe de liceberg de lutilisation de Spark. Si vous utilisez Spark de bout en bout par rapport à un analyste de scripts Python / SQL, il y a de nombreux composants qui sont en eux-mêmes de gros sujets à apprendre.
Bien sûr, vous pouvez utiliser Spark localement (votre ordinateur portable) et sans Hadoop, mais dans le «monde réel», vous nutiliserez pas Spark comme ça. Cest bien dapprendre une partie de la syntaxe, mais ne vous y trompez pas, personne ne vous embauchera pour faire «Spark» dans ce contexte (* jeu de mots prévu).
La seule raison dutiliser Spark est la performance et vous êtes assis sur un système de fichiers distribué, également appelé «Big Data». Cela signifie que lorsque vous écrivez du code pour vos travaux Spark, vous comprenez des choses comme les partitions, les nœuds, la sérialisation, la JVM, les vcores, les exécuteurs, la mémoire, la mémoire et le disque, les mélanges, les fichiers compressés, les formats en colonnes (parquet), etc. moyen de déplacer des données, disons S3 via RDD, DataFrames, DataSets (Java / Scala uniquement) et Spark SQL vers votre ensemble de données final.
Pour moi, cest un peu comme quand quelquun dirait quil sait » Excel »et ensuite vous leur demanderiez sils pouvaient écrire une macro de base à partir de zéro et ils obtiendraient ce cerf dans le look des phares.
Une éventuelle aventure dans Spark inclurait:
- Création de votre cluster Hadoop (nœuds, mémoire, instances EC2, etc.)
- Configuration YARN (nœuds, cœurs, instances, exécuteurs, gestion de la mémoire, pilotes, mémoire supplémentaire, diffusion, en mémoire et sur gestion de disque, etc.) – nimporte lequel de ceux-ci peut bloquer / tuer vos travaux et vous nallez pas plus loin avec des charges de données même insignifiantes si lune dentre elles ne fonctionne pas, nous avec vos données.
- Documentation Spark RDD
- Documentation Spark DataFrames
- Documentation Spark SQL
- Vous allez inévitablement écrire du code dans # 3–5 qui exposera les problèmes de # 2.
- À ce stade, vous déboguerez probablement au minimum du code Java, et si vous utilisez Python, des erreurs de passerelle py4J pour des problèmes de type de données avec Python et des objets de données en streaming.
Beaucoup de gens peuvent écrire des fonctions / méthodes sur RDD, DataFrames et Spark SQL en quelques minutes et sils ont une certaine expérience avec Python et SQL – peut-être engloutissez même les RDD, les DataFrames et la documentation SQL en quelques jours – mais lorsque votre travail Spark est tué pour une diffusion, un exécuteur, une tâche ou une erreur de mémoire – rien de tout cela naura dimportance. Vous enfilez la combinaison étanche Spark et vous plongez profondément dans le ventre de Spark [Java].