PySpark SelectExpr()

Pyspark Selectexpr



Използвайки функцията selectExpr() в PySpark, можем директно да оценим израз, без да създаваме ТАБЛИЦА или ИЗГЛЕД. Тази функция е достъпна в модула pyspark.sql.DataFrame, който е подобен на метода select(). С selectExpr() можем да показваме колоните, да прилагаме функциите върху колоните, да оценяваме изразите, да изпълняваме операциите за агрегиране и т.н. Също така е възможно да оценяваме/посочваме няколко колони наведнъж.

Pyspark.sql.DataFrame.selectExpr()

Функцията selectexpr() взема колоните/набора от изрази и връща DataFrame въз основа на посочените изрази/колони. В тази функция могат да бъдат посочени множество изрази, които са разделени със запетая. За да покажем DataFrame, можем да използваме функциите show()/collect().

Синтаксис:







pyspark_DataFrame_object.selectExpr(“Колони”/”Изрази”)

Тук обектът pyspark_DataFrame_object е входният PySpark DataFrame.



Сценарий 1: Изберете колоните

В този сценарий ще видим как да изберете конкретните колони от PySpark DataFrame с помощта на функцията selectExpr().



Изразът, който се използва е “existing_column as new_name”. Тук existing_column е името на колоната, което присъства в DataFrame и се показва като new_name (псевдоним).





Пример:

Създайте PySpark DataFrame с име „agri_df“ с 5 реда и колони. Вземете колоните „Soil_status“ и „Soil_Type“ като „STATUS“ и „TYPE“.

импортиране на pyspark

от pyspark.sql импортирайте SparkSession

linuxhint_spark_app = SparkSession.builder.appName( „Linux Hint“ ).getOrCreate()

# данни за земеделие с 5 реда и 5 колони

агри =[{ „тип_почва“ : 'черно' , „Наличност_напояване“ : 'Не' , 'акри' : 2500 , „състояние на почвата“ : 'сухо' ,
'Държава' : 'САЩ' },

{ „тип_почва“ : 'черно' , „Наличност_напояване“ : 'да' , 'акри' : 3500 , „състояние на почвата“ : 'мокро' ,
'Държава' : 'Индия' },

{ „тип_почва“ : Нито един , „Наличност_напояване“ : 'да' , 'акри' : 210 , „състояние на почвата“ : 'сухо' ,
'Държава' : 'UK' },

{ „тип_почва“ : 'Друго' , „Наличност_напояване“ : 'Не' , 'акри' : 1000 , „състояние на почвата“ : 'мокро' ,
'Държава' : 'САЩ' },

{ „тип_почва“ : 'Пясък' , „Наличност_напояване“ : 'Не' , 'акри' : 500 , „състояние на почвата“ : 'сухо' ,
'Държава' : 'Индия' }]



# създайте рамката с данни от горните данни

agri_df = linuxhint_spark_app.createDataFrame(agri)

# Вземете Soil_status и Soil_Type като 'STATUS' и 'TYPE'.

agri_df.selectExpr( „Състояние на почвата като СТАТУС“ , „Soil_Type като TYPE“ ).покажи()

Изход:



Сценарий 2: Указване на условните изрази

В този сценарий ще видим как да оценим условията във функцията selectExpr().

Изразът, който се използва, е “existing_column operator value”. Тук existing_column е името на колоната, което присъства в DataFrame и ние сравняваме всяка стойност в тази колона с низа/стойността.

Пример 1:

Проверете дали държавата е „САЩ“ или не. Тук се използва операторът equalto (=).

импортиране на pyspark

от pyspark.sql импортирайте SparkSession

linuxhint_spark_app = SparkSession.builder.appName( „Linux Hint“ ).getOrCreate()

# данни за земеделие с 5 реда и 5 колони

агри =[{ „тип_почва“ : 'черно' , „Наличност_напояване“ : 'Не' , 'акри' : 2500 , „състояние на почвата“ : 'сухо' ,
'Държава' : 'САЩ' },

{ „тип_почва“ : 'черно' , „Наличност_напояване“ : 'да' , 'акри' : 3500 , „състояние на почвата“ : 'мокро' ,
'Държава' : 'Индия' },

{ „тип_почва“ : Нито един , „Наличност_напояване“ : 'да' , 'акри' : 210 , „състояние на почвата“ : 'сухо' ,
'Държава' : 'UK' },

{ „тип_почва“ : 'Друго' , „Наличност_напояване“ : 'Не' , 'акри' : 1000 , „състояние на почвата“ : 'мокро' ,
'Държава' : 'САЩ' },

{ „тип_почва“ : 'Пясък' , „Наличност_напояване“ : 'Не' , 'акри' : 500 , „състояние на почвата“ : 'сухо' ,
'Държава' : 'Индия' }]



# създайте рамката с данни от горните данни

agri_df = linuxhint_spark_app.createDataFrame(agri)

# Проверете дали държавата е „САЩ“ или не.

agri_df.selectExpr( „Държава = „САЩ““ ).покажи()

Изход:

Пример 2:

Проверете дали Soil_Type е NULL или не. Ключовата дума NULL проверява дали стойността е NULL или не. Ако е нула, се връща true. В противен случай се връща false. Крайният израз е „Soil_Type IS NULL“

импортиране на pyspark

от pyspark.sql импортирайте SparkSession

linuxhint_spark_app = SparkSession.builder.appName( „Linux Hint“ ).getOrCreate()

# данни за земеделие с 5 реда и 5 колони

агри =[{ „тип_почва“ : 'черно' , „Наличност_напояване“ : 'Не' , 'акри' : 2500 , „състояние на почвата“ : 'сухо' ,
'Държава' : 'САЩ' },

{ „тип_почва“ : 'черно' , „Наличност_напояване“ : 'да' , 'акри' : 3500 , „състояние на почвата“ : 'мокро' ,
'Държава' : 'Индия' },

{ „тип_почва“ : Нито един , „Наличност_напояване“ : 'да' , 'акри' : 210 , „състояние на почвата“ : 'сухо' ,
'Държава' : 'UK' },

{ „тип_почва“ : 'Друго' , „Наличност_напояване“ : 'Не' , 'акри' : 1000 , „състояние на почвата“ : 'мокро' ,
'Държава' : 'САЩ' },

{ „тип_почва“ : 'Пясък' , „Наличност_напояване“ : 'Не' , 'акри' : 500 , „състояние на почвата“ : 'сухо' ,
'Държава' : 'Индия' }]



# създайте рамката с данни от горните данни

agri_df = linuxhint_spark_app.createDataFrame(agri)

# Проверете дали Soil_Type е NULL или не.

agri_df.selectExpr( „Soil_Type IS NULL“ ).покажи()

Изход:

Сценарий 3: Оценяване на изразите

В този сценарий ще видим как да посочим математическите изрази. Изразът, който се използва е „съществуваща_колона математически_израз“.

Пример:

  1. Покажете действителната колона „Акри“.
  2. Добавете 100 към колоната „Акра“.
  3. Извадете 100 от колоната „Акри“.
  4. Умножете 100 с колоната „Акри“.
  5. Разделете колоната „Акри“ на 100.
импортиране на pyspark

от pyspark.sql импортирайте SparkSession

linuxhint_spark_app = SparkSession.builder.appName( „Linux Hint“ ).getOrCreate()

# данни за земеделие с 5 реда и 5 колони

агри =[{ „тип_почва“ : 'черно' , „Наличност_напояване“ : 'Не' , 'акри' : 2500 , „състояние на почвата“ : 'сухо' ,
'Държава' : 'САЩ' },

{ „тип_почва“ : 'черно' , „Наличност_напояване“ : 'да' , 'акри' : 3500 , „състояние на почвата“ : 'мокро' ,
'Държава' : 'Индия' },

{ „тип_почва“ : Нито един , „Наличност_напояване“ : 'да' , 'акри' : 210 , „състояние на почвата“ : 'сухо' ,
'Държава' : 'UK' },

{ „тип_почва“ : 'Друго' , „Наличност_напояване“ : 'Не' , 'акри' : 1000 , „състояние на почвата“ : 'мокро' ,
'Държава' : 'САЩ' },

{ „тип_почва“ : 'Пясък' , „Наличност_напояване“ : 'Не' , 'акри' : 500 , „състояние на почвата“ : 'сухо' ,
'Държава' : 'Индия' }]



# създайте рамката с данни от горните данни

agri_df = linuxhint_spark_app.createDataFrame(agri)

# Напишете 4 израза за изваждане, добавяне, деление и умножаване на колона Acres.

agri_df.selectExpr( 'акри' , 'Акра - 100' , 'Акра * 100' , 'Акра + 100' , 'Акра / 100' ).покажи()

Изход:

Сценарий 4: Прилагане на агрегатните функции

SUM(име_на_колона) – Оценява общата стойност в указаната колона.

MEAN(име_на_колона) – Оценява средната стойност в посочената колона.

MIN(име на_колона) – Връща минималния елемент сред всички елементи в указаната колона.

MAX(име_на_колона) – Връща максималния елемент сред всички елементи в указаната колона.

Пример:

  1. Намерете общия, средния, броя, минималния и максималния елемент на „акри“.
  2. Намерете минималните и максималните елементи в колоната „Състояние на почвата“.
импортиране на pyspark

от pyspark.sql импортирайте SparkSession

linuxhint_spark_app = SparkSession.builder.appName( „Linux Hint“ ).getOrCreate()

# данни за земеделие с 5 реда и 5 колони

агри =[{ „тип_почва“ : 'черно' , „Наличност_напояване“ : 'Не' , 'акри' : 2500 , „състояние на почвата“ : 'сухо' ,
'Държава' : 'САЩ' },

{ „тип_почва“ : 'черно' , „Наличност_напояване“ : 'да' , 'акри' : 3500 , „състояние на почвата“ : 'мокро' ,
'Държава' : 'Индия' },

{ „тип_почва“ : Нито един , „Наличност_напояване“ : 'да' , 'акри' : 210 , „състояние на почвата“ : 'сухо' ,
'Държава' : 'UK' },

{ „тип_почва“ : 'Друго' , „Наличност_напояване“ : 'Не' , 'акри' : 1000 , „състояние на почвата“ : 'мокро' ,
'Държава' : 'САЩ' },

{ „тип_почва“ : 'Пясък' , „Наличност_напояване“ : 'Не' , 'акри' : 500 , „състояние на почвата“ : 'сухо' ,
'Държава' : 'Индия' }]



# създайте рамката с данни от горните данни

agri_df = linuxhint_spark_app.createDataFrame(agri)

# Агрегирани операции

agri_df.selectExpr( 'SUM (акра)' , 'СРЕДНО (акра)' , „COUNT(акра)“ , 'СРВ (акра)' , 'MIN (акра)' ,
'MAX (акра)' ).покажи()

agri_df.selectExpr( 'MIN(състояние_на_почвата)' , 'MAX(състояние_на_почвата)' ).покажи()

Изход:

Заключение

Обсъдихме функцията selectExpr(), която взема колоните/наборите от изрази и връща DataFrame въз основа на посочените изрази/колони. Като част от това научихме четирите основни сценария, в които selectExpr() е приложим. В тази функция могат да бъдат посочени множество изрази, които са разделени със запетая. Няма нужда да създавате ВРЕМЕНЕН ИЗГЛЕД, за да използвате функцията selectExpr().