Zacznij terazZacznij za darmo

Przechowywanie wyników pośrednich

Jak widziałeś w rozdziale 1., kopiowanie danych między R a Spark jest z natury powolne. Oznacza to, że zbieranie danych za pomocą collect(), tak jak w poprzednim ćwiczeniu, powinno odbywać się tylko wtedy, gdy naprawdę jest to konieczne.

Operator potoku świetnie sprawdza się do łączenia kolejnych operacji na danych, ale w praktyce nie da się przeprowadzić całej analizy w jednym długim łańcuchu poleceń. Na przykład poniższy kod to bardzo zła praktyka – debugowanie czegoś takiego byłoby koszmarem.

final_results <- starting_data %>%
  # 743 steps piped together
  # ... %>%
  collect()

Pojawia się więc dylemat: potrzebujesz przechowywać wyniki pośrednich obliczeń, ale nie chcesz ich zbierać, bo to jest powolne. Rozwiązaniem jest użycie compute() – funkcja ta wykonuje obliczenia, ale zapisuje wyniki w tymczasowej ramce danych bezpośrednio w Spark. compute() przyjmuje dwa argumenty: tibbla oraz nazwę zmiennej dla ramki danych Spark, w której zostaną zapisane wyniki.

a_tibble %>%
  # some calculations %>%
  compute("intermediate_results")

To ćwiczenie jest częścią kursu

Wprowadzenie do Spark z pakietem sparklyr w R

Zobacz kurs

Instrukcje do ćwiczenia

Połączenie ze Spark zostało już utworzone jako spark_conn. Tibble powiązany z metadanymi ścieżek zapisanymi w Spark jest predefiniowany jako track_metadata_tbl.

  • Przefiltruj wiersze track_metadata_tbl, wybierając te, w których artist_familiarity jest większe niż 0,8.
  • Oblicz wyniki za pomocą compute().
    • Zapisz wyniki w ramce danych Spark o nazwie "familiar_artists".
    • Przypisz wynik do tibble R o nazwie computed.
  • Sprawdź dostępne zbiory danych Spark za pomocą src_tbls().
  • Wyświetl class() obiektu computed. Zwróć uwagę, że w odróżnieniu od collect(), funkcja compute() zwraca zdalnego tibble. Dane nadal są przechowywane w klastrze Spark.

Interaktywne ćwiczenie praktyczne

Spróbuj tego ćwiczenia, uzupełniając ten przykładowy kod.

# 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
___
Edytuj i uruchom kod