Dodaj Sparka do swoich danych
W poprzednim ćwiczeniu zobaczyłeś(-aś), jak przenosić dane ze Sparka do pandas. A co, jeśli chcesz zrobić odwrotnie – umieścić pandas DataFrame w klastrze Spark? Klasa SparkSession ma do tego odpowiednią metodę.
Metoda .createDataFrame() przyjmuje pandas DataFrame i zwraca Spark DataFrame.
Wynik tej metody jest przechowywany lokalnie, a nie w katalogu SparkSession. Oznacza to, że możesz używać na nim wszystkich metod Spark DataFrame, ale nie możesz uzyskać dostępu do danych w innych kontekstach.
Na przykład zapytanie SQL (z użyciem metody .sql()), które odwołuje się do twojego DataFrame, spowoduje błąd. Aby uzyskać dostęp do danych w ten sposób, musisz zapisać go jako tabelę tymczasową.
Możesz to zrobić za pomocą metody .createTempView() na Spark DataFrame. Przyjmuje ona jako jedyny argument nazwę tabeli tymczasowej, którą chcesz zarejestrować. Metoda ta rejestruje DataFrame jako tabelę w katalogu, ale ponieważ jest ona tymczasowa, dostęp do niej możliwy jest tylko z poziomu konkretnej SparkSession, w której utworzono Spark DataFrame.
Istnieje również metoda .createOrReplaceTempView(). Bezpiecznie tworzy nową tabelę tymczasową, jeśli żadna jeszcze nie istnieje, lub aktualizuje istniejącą, jeśli była już zdefiniowana. Skorzystasz z tej metody, aby uniknąć problemów z duplikatami tabel.
Spójrz na diagram, który pokazuje, jak poszczególne struktury danych w Sparku współdziałają ze sobą.

W twoim środowisku pracy dostępna jest już SparkSession o nazwie spark, numpy zostało zaimportowane jako np, a pandas jako pd.
To ćwiczenie jest częścią kursu
Podstawy PySpark
Instrukcje do ćwiczenia
- Kod tworzący
pandasDataFrame z losowymi liczbami został już przygotowany i zapisany pod nazwąpd_temp. - Utwórz Spark DataFrame o nazwie
spark_temp, wywołując metodę.createDataFrame()z argumentempd_temp. - Sprawdź listę tabel w swoim klastrze Spark i upewnij się, że nowy DataFrame nie jest na niej widoczny. Możesz użyć do tego
spark.catalog.listTables(). - Zarejestruj DataFrame
spark_temp, który właśnie utworzyłeś(-aś), jako tabelę tymczasową za pomocą metody.createOrReplaceTempView(). Tabela tymczasowa powinna mieć nazwę"temp". Pamiętaj, że nazwę tabeli podajesz jako jedyny argument metody! - Sprawdź listę tabel jeszcze raz.
Interaktywne ćwiczenie praktyczne
Spróbuj tego ćwiczenia, uzupełniając ten przykładowy kod.
# Create pd_temp
pd_temp = pd.DataFrame(np.random.random(10))
# Create spark_temp from pd_temp
spark_temp = ____
# Examine the tables in the catalog
print(____)
# Add spark_temp to the catalog
spark_temp.____
# Examine the tables in the catalog again
print(____)