Краткое руководство по 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. Например:
frompyspark.sql.functions importcoldf.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)

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