Ukládání mezivýsledků
Jak sis mohl/a všimnout v kapitole 1, přesun dat mezi R a Sparkem je ze své podstaty pomalý. To znamená, že sbírat data pomocí collect(), jako v předchozím cvičení, bys měl/a jen tehdy, když to skutečně potřebuješ.
Operátor roury je skvělý pro řetězení příkazů pro manipulaci s daty, ale obecně nemůžeš celou analýzu zapsat jako jediný dlouhý řetězec. Například toto je velmi špatná praxe, protože takový kód se pak nedá vůbec ladit.
final_results <- starting_data %>%
# 743 steps piped together
# ... %>%
collect()
To nás staví před dilema. Potřebuješ ukládat mezivýsledky výpočtů, ale nechceš je sbírat pomocí collect(), protože je to pomalé. Řešením je použít compute(), které výpočet provede, ale výsledky uloží do dočasného data frame přímo ve Sparku. Funkce compute() přijímá dva argumenty: tibble a název proměnné pro Spark data frame, do kterého se výsledky uloží.
a_tibble %>%
# some calculations %>%
compute("intermediate_results")
Toto cvičení je součástí kurzu
Úvod do Sparku se sparklyr v R
Pokyny k cvičení
Spark připojení je pro tebe připraveno jako spark_conn. Tibble napojený na metadata skladeb uložená ve Sparku je předem definován jako track_metadata_tbl.
- Vyfiltruj řádky z
track_metadata_tbl, kde jeartist_familiarityvětší než 0,8. - Výsledky vypočítej pomocí
compute().- Výsledky ulož do Spark data frame s názvem
"familiar_artists". - Výsledek přiřaď R tibble s názvem
computed.
- Výsledky ulož do Spark data frame s názvem
- Prohlédni si dostupné Spark datasety pomocí
src_tbls(). - Vypiš
class()objektucomputed. Všimni si, že na rozdíl odcollect()vracícompute()vzdálený tibble. Data jsou stále uložena ve Spark clusteru.
Interaktivní cvičení na vyzkoušení si v praxi
Vyzkoušejte si toto cvičení dokončením tohoto ukázkového kódu.
# track_metadata_tbl has been pre-defined
track_metadata_tbl
computed <- track_metadata_tbl %>%
# Filter where artist familiarity is greater than 0.8
___ %>%
# Compute the results
___
# See the available datasets
___
# Examine the class of the computed results
___