Nejlepší odpověď
Doporučuji vám přečíst si starší verze kódu Sparku.
Zvažte verzi 0.5 vydáno v roce 2012 apache / spark Do té doby měl Spark pouze asi 70 souborů zdrojového kódu a všechny tyto soubory byly malé. Zde se podívejte na zdrojový kód RDD: apache / spark Všechno je tak jednoduché a výstižné.
Všimněte si také, že architektura Sparku nemá Od té doby se dramaticky změnilo. Vývojáři právě přidali spoustu chyb, optimalizací a integraci s externími technologiemi, jako jsou Yarn nebo Kafka.
Když pochopíte, jak Spark fungoval v roce 2012, nebyl by problém pochopit, jak Spark funguje dnes.
Kromě toho vám doporučuji přečíst si tyto poznámky: JerryLead / SparkInternals . Poskytují přehled vnitřní architektury Sparku.
Odpověď
Chcete-li se vrátit k odpovědi Noama Ben-Amiho – KDYŽ jste koncovým uživatelem, Spark může být docela vyčerpávající a obtížné se naučit.
I když znáte Bash, Python a SQL, je to jen špička ledovce používání Sparku. Pokud se chystáte „end-to-end“ Spark vs skriptovací analytik Python / SQL, má mnoho komponent, které jsou samy o sobě velkým tématem, které se musíte naučit.
Jistě, můžete použít Spark lokálně (váš notebook) a bez Hadoop, ale ve „skutečném světě“ Spark takhle používat nebudete. Je hezké naučit se některé syntaxe, ale nedělejte si chybu, nikdo vás v tomto kontextu nenajme, abyste provedli „Spark“ (zamýšleno * pun).
Celý důvod, proč používat Spark, je výkon a sedíte na vrcholu distribuovaného systému souborů aka „Big Data“. To znamená, že když píšete kód pro své úlohy Spark, rozumíte věcem, jako jsou oddíly, uzly, serializace, JVM, vcores, vykonavatelé, paměť, paměť a disk, míchání, komprimované soubory, sloupcové formáty (parkety) atd. způsob přesunu dat ze S3 přes RDD, DataFrames, DataSets (pouze Java / Scala) a Spark SQL do vaší koncové datové sady.
Pro mě je to hodně podobné, když by někdo řekl, že ví “ Excel “a pak byste se jich zeptali, jestli by mohli napsat základní makro od nuly a dostali toho jelena do vzhledu světlometů.
Možný podnik do Sparku by zahrnoval:
- Vytváření clusteru Hadoop (uzly, paměť, instance EC2 atd.)
- Konfigurace YARN (uzly, jádra, instance, exekutoři, správa paměti, ovladače, paměť nad hlavou, vysílání, v paměti a dále správa disků atd.) – kterýkoli z nich může zavěsit / zabít vaše úlohy a nedostanete se ani o krok dále ani při triviálním zatížení dat, pokud některý z nich nefunguje S vašimi daty.
- Dokumentace Spark RDDs
- Dokumentace Spark DataFrames
- Dokumentace Spark SQL
- Nevyhnutelně budete psát kód # 3–5, která odhalí problémy # 2.
- V tomto okamžiku budete pravděpodobně ladit minimálně, kód Java, a pokud používáte Python, chyby brány py4J k problémům s datovými typy s Pythonem a streamováním datových objektů.
Mnoho lidí může psát funkce / metody proti RDD, DataFrames a Spark SQL za pouhé minuty a pokud mají nějaké zkušenosti s Pythonem a SQL – možná dokonce za pár dní pohltí RDD, DataFrames a dokumentaci SQL – ale když bude vaše úloha Spark zabita kvůli chybě vysílání, exekutora, úkolu nebo paměti – na ničem z toho nebude záležet. Oblékáte si mokrý oblek Spark a vydáváte se na hluboký ponor do břicha Spark [Java].