Začněte nyníZačněte zdarma

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

Zobrazit kurz

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 je artist_familiarity vě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.
  • Prohlédni si dostupné Spark datasety pomocí src_tbls().
  • Vypiš class() objektu computed. Všimni si, že na rozdíl od collect() 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
___
Upravit a spustit kód