Zmniejszanie zbioru danych przez próbkowanie
Pracując z dużym zbiorem danych, rzadko kiedy trzeba na raz przetwarzać wszystkie rekordy. Szczególnie na początku projektu, gdy eksperymentujesz z różnymi podejściami, szybciej iterujesz na mniejszym wycinku danych. Funkcja sdf_sample() to wygodny sposób na uzyskanie takiego wycinka. Przyjmuje ona obiekt tibble oraz ułamek wierszy do zwrócenia. W tym przypadku chcemy pobrać próbkę bez zwracania. Aby uzyskać losową próbkę jednej dziesiątej zbioru danych, użyj poniższego kodu.
a_tibble %>%
sdf_sample(fraction = 0.1, replacement = FALSE)
Ponieważ wyniki próbkowania są losowe, a pomniejszony zbiór danych prawdopodobnie będzie używany wielokrotnie, dobrą praktyką jest użycie funkcji compute(), która zapisuje wyniki jako kolejną ramkę danych Spark.
a_tibble %>%
sdf_sample(<some args>) %>%
compute("sample_dataset")
Aby wyniki były odtwarzalne, możesz ustawić ziarno generatora liczb losowych za pomocą argumentu seed. Dzięki temu za każdym razem, gdy uruchamiasz kod, otrzymujesz ten sam losowy zbiór danych. Wartość ziarna nie ma znaczenia – wybierz dowolną dodatnią liczbę całkowitą.
To ćwiczenie jest częścią kursu
Wprowadzenie do Spark z pakietem sparklyr w R
Instrukcje do ćwiczenia
Połączenie ze Sparkiem zostało już utworzone jako spark_conn. Obiekt tibble powiązany z metadanymi utworów przechowywanymi w Sparku jest wstępnie zdefiniowany jako track_metadata_tbl.
- Użyj funkcji
sdf_sample(), aby pobrać 1% metadanych utworów bez zwracania.- Przekaż wartość
20000229do argumentuseed, aby ustawić ziarno generatora liczb losowych.
- Przekaż wartość
- Oblicz wynik i zapisz go w tabeli o nazwie
"sample_track_metadata".
Interaktywne ćwiczenie praktyczne
Spróbuj tego ćwiczenia, uzupełniając ten przykładowy kod.
# track_metadata_tbl has been pre-defined
track_metadata_tbl
track_metadata_tbl %>%
# Sample the data without replacement
___ %>%
# Compute the result
___