1. Nauka
  2. /
  3. Kursy
  4. /
  5. Wprowadzenie do Spark z pakietem sparklyr w R

Connected

ćwiczenie

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")

Instrukcje

100 XP

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.