Краткое руководство по PySpark для начинающих



В этом коротком руководстве мы покажем вам различные способы выбора столбцов в PySpark. Вначале мы загрузим CSV-файл с S3.

df = spark.read.options(header=True).csv("s3://my-bucket/folder1/")
df.show()

Или, если мы хотим получить список имен столбцов:

df.columns

Мы получаем:

['Row_Number', 'Hash_Name', 'Event_Date', 'Rating', 'Category', 'Class_A', 'Class_B', 'Class_C', 'File_Path']

Выбрать столбцы по имени

Допустим, мы хотим выбрать два столбца, Row_Number и Category. Давайте посмотрим, как мы можем это сделать.

df.select(df.Row_Number, df.Category).show(5)

Или мы могли бы передать имена столбцов следующим образом (это полезно, когда имена столбцов содержат пробелы и т. д.)

df.select(df['Row_Number'], df['Category']).show(5)

Выбрать столбцы из списка

Мы также можем выбрать столбцы из списка имен столбцов. Например:

df.select(['Row_Number','Category']).show(5)

Имейте в виду, что это работает и без списка. Например:

df.select('Row_Number','Category').show(5)

Выберите столбцы с функцией col()

Мы можем использовать функцию col() из functions. Например:

from pyspark.sql.functions import col
df.select(col('Row_Number'),col('Category')).show(5)

Выберите столбцы с регулярными выражениями

Мы можем выбирать столбцы, используя регулярные выражения. Допустим, мы хотим выбрать все столбцы, содержащие строку Class плюс Row_Number.

df.select(df.colRegex("`Class.*`"), df["Row_Number"]).show(5)

Выберите столбцы на основе индекса столбцов

Косвенно мы можем выбирать столбцы на основе индекса столбцов. Например, предположим, что я хочу выбрать 1-й и 3-й столбцы.

mylist = df.columns
idx = [0,2]
df.select([mylist[i] for i in idx]).show(5)

Выберите столбцы с операторами SQL

Наконец, есть альтернативный способ выбора столбцов с помощью операторов SQL. В этом случае нам нужно будет сначала создать временное представление, а затем запустить оператор выбора SQL.

df.createOrReplaceTempView('mytable')
spark.sql('SELECT Row_Number, Event_Date FROM mytable').show(5)

Изначально опубликовано в Предсказательные хаки