Pyspark - Expr

Pyspark - Expr
En Python, Pyspark es un módulo Spark que proporciona un tipo similar de procesamiento como Spark usando DataFrame. Expr () en Pyspark se refiere a una expresión de SQL utilizada para extraer los datos realizando algunas operaciones. Expr () se puede usar en muchos escenarios.

Sintaxis real

Expr (expresión SQL)

Se necesita una expresión de SQL y realiza algunas operaciones dentro de la expresión.

Discutamos uno por uno. Antes de eso, tenemos que crear un marco de datos de Pyspark para la demostración."

Ejemplo
Vamos a crear un marco de datos con 5 filas y 6 columnas y mostrarlo usando el método show ().

#Importa el módulo Pyspark
importar pyspark
#Import Sparksession para crear una sesión
de Pyspark.SQL Import Sparksession
#cree una aplicación llamada Linuxhint
Spark_app = Sparksession.constructor.AppName ('Linuxhint').getorcreate ()
# Crear datos de estudiante con 5 filas y 6 atributos
estudiantes = ['Rollno': '001', 'Nombre': 'Sravan', 'Age': 23, 'Altura': 5.79, 'Peso': 67, 'Dirección': 'Guntur',
'Rollno': '002', 'Nombre': 'ojaswi', 'edad': 16, 'altura': 3.79, 'Peso': 34, 'Dirección': 'Hyd',
'Rollno': '003', 'Nombre': 'Gnanesh Chowdary', 'Age': 7, 'Altura': 2.79, 'Peso': 17, 'Dirección': 'Patna',
'rollno': '004', 'nombre': 'rohith', 'edad': 9, 'altura': 3.69, 'Peso': 28, 'Dirección': 'Hyd',
'Rollno': '005', 'Nombre': 'Sridevi', 'Age': 37, 'Altura': 5.59, 'Peso': 54, 'Dirección': 'Hyd']
# Crea el DataFrame
DF = Spark_App.Createdataframe (estudiantes)
#Data DataFrame
df.espectáculo()

Producción

escenario 1: Concatenando una o más columnas

En este escenario, concatenaremos una o más columnas en Pyspark DataFrame usando Expr ().

Utiliza el método withColumn () para crear un nuevo nombre de columna para las columnas concatenadas.

Sintaxis

marco de datos.withColumn ("column_name", expresión)

Parámetros
Se necesitan dos parámetros.

  1. Primero está el nombre de la columna utilizado como el nombre de la columna para las columnas concatenadas
  2. La expresión se crea usando expr () para concatenar columnas.

Aquí la expresión es:

Expr ("columna1 || separador || columna2 || separador '|| ... || columna n")

Aquí, la columna se refiere a los nombres de la columna para concatenarse con un separador entre ellos. Puede ser cualquier personaje, como personajes especiales.

Ejemplo
En este ejemplo, estamos concatenando tres columnas: Roll No Nombre y dirección separadas por " -" Y el nombre de la columna para estas columnas concatenadas es: "Rollno con nombre y dirección."

#Importa el módulo Pyspark
importar pyspark
#Import Sparksession para crear una sesión
de Pyspark.SQL Import Sparksession
#cree una aplicación llamada Linuxhint
Spark_app = Sparksession.constructor.AppName ('Linuxhint').getorcreate ()
# Crear datos de estudiante con 5 filas y 6 atributos
estudiantes = ['Rollno': '001', 'Nombre': 'Sravan', 'Age': 23, 'Altura': 5.79, 'Peso': 67, 'Dirección': 'Guntur',
'Rollno': '002', 'Nombre': 'ojaswi', 'edad': 16, 'altura': 3.79, 'Peso': 34, 'Dirección': 'Hyd',
'Rollno': '003', 'Nombre': 'Gnanesh Chowdary', 'Age': 7, 'Altura': 2.79, 'Peso': 17, 'Dirección': 'Patna',
'rollno': '004', 'nombre': 'rohith', 'edad': 9, 'altura': 3.69, 'Peso': 28, 'Dirección': 'Hyd',
'Rollno': '005', 'Nombre': 'Sridevi', 'Age': 37, 'Altura': 5.59, 'Peso': 54, 'Dirección': 'Hyd']
# Crea el DataFrame
DF = Spark_App.Createdataframe (estudiantes)
#Concate rollNo, columnas de nombre y dirección Uaing Expr ()
df.WithColumn ("Rollno con nombre y dirección", Expr ("Rollno || '-' || Nombre || '-' || Dirección")).espectáculo()

Producción

Podemos ver que las columnas Rollno, Nombre y Dirección están concatenadas con el "-" Separador.

Escenario 2: Agregue una nueva columna basada en condiciones

Aquí, utilizaremos Exr () para especificar las condiciones dentro y, junto con COLUMN (), para asignar los valores de las condiciones devueltas en una nueva columna.

Podemos especificar las condiciones utilizando el caso cuando

Estructura

Caso cuando
ENTONCES
Caso cuando
ENTONCES


DEMÁS
FIN

En el interior, cuando tenemos que proporcionar la condición y el interior, entonces tenemos que realizar una acción.

Si la condición interna es verdadera, entonces se ejecuta el bloque. Si falla, va al bloque y fin.

Esta declaración condicional se proporciona dentro de Expr () como una expresión de SQL.

Sintaxis

marco de datos.withColumn ("columna", expr ("caso cuando condición1 entonces acción" +"Cuando condición2 entonces acción ... el más acción de acción final"))

Dónde,

  1. La columna es la nueva columna que se crea, y los valores se asignan en función de las condiciones en esta columna
  2. Expr () toma el caso cuando la lógica condicional

Ejemplo
En este ejemplo, estamos creando una nueva columna: "altura actualizada", y asignando valores en función de las siguientes condiciones aplicadas a la columna de altura.

Si la altura es mayor que 5, asigne 10 en la columna de altura actualizada a través de ella.

Si la altura es inferior a 5, asigne 5 en la columna de altura actualizada a través de ella.

De lo contrario, actualice la columna de altura a 7 en las filas.

#Importa el módulo Pyspark
importar pyspark
#Import Sparksession para crear una sesión
de Pyspark.SQL Import Sparksession
#cree una aplicación llamada Linuxhint
Spark_app = Sparksession.constructor.AppName ('Linuxhint').getorcreate ()
# Crear datos de estudiante con 5 filas y 6 atributos
estudiantes = ['Rollno': '001', 'Nombre': 'Sravan', 'Age': 23, 'Altura': 5.79, 'Peso': 67, 'Dirección': 'Guntur',
'Rollno': '002', 'Nombre': 'ojaswi', 'edad': 16, 'altura': 3.79, 'Peso': 34, 'Dirección': 'Hyd',
'Rollno': '003', 'Nombre': 'Gnanesh Chowdary', 'Age': 7, 'Altura': 2.79, 'Peso': 17, 'Dirección': 'Patna',
'rollno': '004', 'nombre': 'rohith', 'edad': 9, 'altura': 3.69, 'Peso': 28, 'Dirección': 'Hyd',
'Rollno': '005', 'Nombre': 'Sridevi', 'Age': 37, 'Altura': 5.59, 'Peso': 54, 'Dirección': 'Hyd']
# Crea el DataFrame
DF = Spark_App.Createdataframe (estudiantes)
#Columna de altura
#IF La altura es mayor que 5: asigne 10 en la columna de altura actualizada a través de ella
#IF La altura es inferior a 5: asigne 5 en la columna de altura actualizada a través de ella
#columna de altura actualizada en otros como 7 en las filas
df.WithColumn ("Altura actualizada", Expr ("Caso cuando la altura> 5 luego 10" +"Cuando la altura <5 THEN 5 ELSE 7 END")).show()

Producción

Podemos ver que los valores se asignan en la columna "Altura actualizada" en función de las condiciones.

Escenario 3: Realizar operaciones aritméticas

Es posible realizar operaciones aritméticas como adición, resta, multiplicación y división con columnas existentes usando expr ().

Aquí Exr () se puede usar con una cláusula SELECT para mostrar las columnas actualizadas.

Sintaxis

marco de datos.Seleccionar (expr ("expresión"))

La expresión se usa para realizar operaciones aritméticas que pueden ser:

"Valor de columna arithmetic_operator como new_column"

Aquí, la columna es el nombre de la columna en el que podemos realizar operaciones aritméticas; El valor es el número agregado a cada fila en la columna, y new_column es el nombre de la columna que almacena el resultado.

Ejemplo
En este ejemplo, realizaremos dos operaciones aritméticas: suma y resta en la columna de edad.

#Importa el módulo Pyspark
importar pyspark
#Import Sparksession para crear una sesión
de Pyspark.SQL Import Sparksession
#cree una aplicación llamada Linuxhint
Spark_app = Sparksession.constructor.AppName ('Linuxhint').getorcreate ()
# Crear datos de estudiante con 5 filas y 6 atributos
estudiantes = ['Rollno': '001', 'Nombre': 'Sravan', 'Age': 23, 'Altura': 5.79, 'Peso': 67, 'Dirección': 'Guntur',
'Rollno': '002', 'Nombre': 'ojaswi', 'edad': 16, 'altura': 3.79, 'Peso': 34, 'Dirección': 'Hyd',
'Rollno': '003', 'Nombre': 'Gnanesh Chowdary', 'Age': 7, 'Altura': 2.79, 'Peso': 17, 'Dirección': 'Patna',
'rollno': '004', 'nombre': 'rohith', 'edad': 9, 'altura': 3.69, 'Peso': 28, 'Dirección': 'Hyd',
'Rollno': '005', 'Nombre': 'Sridevi', 'Age': 37, 'Altura': 5.59, 'Peso': 54, 'Dirección': 'Hyd']
# Crea el DataFrame
DF = Spark_App.Createdataframe (estudiantes)
#columna de 10 a edad
df.Seleccionar (DF.edad, expr ("edad + 10 como edad_after_10")).espectáculo()
#contratación 10 de la columna de edad
df.Seleccionar (DF.edad, expr ("edad - 10 como age_before_10")).espectáculo()

Producción

En la operación de adición, estamos agregando 10 a la columna de edad y almacenamos en la columna "Age_After_10".

En la operación de sustracción, restamos 10 de la columna de edad y la almacenamos en la columna "Age_Before_10".

Conclusión

En este tutorial de Pyspark, vimos cómo usar Expr () en tres escenarios diferentes. Se puede utilizar para expresiones condicionales, se puede usar para realizar operaciones aritméticas y se puede usar para concatenar múltiples columnas.