ПочатиПочніть безкоштовно

Додайте трохи Spark до ваших даних

У попередній вправі ви бачили, як передавати дані зі Spark до pandas. Але інколи потрібно зробити навпаки й помістити датафрейм pandas у кластер Spark! Клас SparkSession теж має для цього метод.

Метод .createDataFrame() приймає датафрейм pandas і повертає датафрейм Spark.

Результат цього методу зберігається локально, а не в каталозі SparkSession. Тобто ви можете використовувати всі методи датафрейма Spark, але не матимете доступу до цих даних в інших контекстах.

Наприклад, SQL‑запит (через метод .sql()), який звертається до вашого датафрейма, спричинить помилку. Щоб мати доступ таким способом, потрібно зберегти його як тимчасову таблицю.

Для цього скористайтеся методом датафрейма Spark .createTempView(), який як єдиний аргумент приймає назву тимчасової таблиці, яку ви хочете зареєструвати. Цей метод реєструє датафрейм як таблицю в каталозі, але, оскільки таблиця тимчасова, доступ до неї можливий лише з конкретного SparkSession, у якому створено датафрейм Spark.

Існує також метод .createOrReplaceTempView(). Він безпечно створює нову тимчасову таблицю, якщо її ще немає, або оновлює наявну, якщо така вже визначена. Ви використаєте саме цей метод, щоб уникнути проблем із дублюванням таблиць.

Перегляньте діаграму, щоб побачити, як взаємодіють між собою різні структури даних у Spark.

У вашому середовищі вже є SparkSession з назвою spark, а також імпортовано numpy як np і pandas як pd.

Ця вправа є частиною курсу

Основи PySpark

Переглянути курс

Інструкції до вправи

  • Код для створення датафрейма pandas із випадковими числами вже надано й збережено в змінній pd_temp.
  • Створіть датафрейм Spark під назвою spark_temp, викликавши метод Spark .createDataFrame() з аргументом pd_temp.
  • Перегляньте список таблиць у вашому кластері Spark і переконайтеся, що нового датафрейма там немає. Пам'ятайте, що для цього можна використати spark.catalog.listTables().
  • Зареєструйте щойно створений датафрейм spark_temp як тимчасову таблицю за допомогою методу .createOrReplaceTempView(). Тимчасова таблиця має називатися "temp". Пам'ятайте: назву таблиці потрібно передати як єдиний аргумент методу!
  • Знову перегляньте список таблиць.

Інтерактивна практична вправа

Спробуйте виконати цю вправу, доповнивши цей зразок коду.

# 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(____)
Редагувати та запускати код