НачатьНачать бесплатно

Выборка II

Как и в SQL, метод .select() позволяет выполнять операции над столбцами. При выборке столбца с помощью нотации df.colName можно применять любые операции — и .select() вернёт преобразованный столбец. Например,

flights.select(flights.air_time/60)

возвращает столбец с продолжительностью полётов в часах вместо минут. Метод .alias() позволяет переименовать выбираемый столбец. Так, чтобы получить столбец duration_hrs (которого нет в DataFrame) с помощью .select(), можно написать:

flights.select((flights.air_time/60).alias("duration_hrs"))

Эквивалентный метод Spark DataFrame — .selectExpr() — принимает SQL-выражения в виде строки:

flights.selectExpr("air_time/60 as duration_hrs")

здесь ключевое слово SQL as эквивалентно методу .alias(). Чтобы выбрать несколько столбцов, передайте несколько строк.

Напомним: объект SparkSession с именем spark уже доступен в вашем рабочем пространстве, как и DataFrame flights.

Это упражнение является частью курса

Основы PySpark

Посмотреть курс

Инструкции к упражнению

Создайте таблицу со средней скоростью каждого рейса двумя способами.

  • Вычислите среднюю скорость, разделив distance на air_time (переведённое в часы). С помощью метода .alias() назовите этот столбец "avg_speed". Сохраните результат в переменную avg_speed.
  • Выберите столбцы "origin", "dest", "tailnum" и avg_speed (без кавычек!). Сохраните результат в переменную speed1.
  • Создайте ту же таблицу с помощью .selectExpr() и строки, содержащей SQL-выражение. Сохраните результат в переменную speed2.

Интерактивное практическое упражнение

Попробуйте выполнить это упражнение, дополнив этот пример кода.

# Define avg_speed
avg_speed = (flights.____/(flights.____/60)).alias("____")

# Select the correct columns
speed1 = flights.select("origin", "dest", "tailnum", avg_speed)

# Create the same table using a SQL expression
speed2 = flights.selectExpr("____", "____", "____", "distance/(air_time/60) as ____")
Редактировать и запускать код