Pyspark - la mejor función

Pyspark - la mejor función
Es posible devolver los elementos más grandes en dos o más columnas en Pyspark DataFrame.

Pyspark admite la función Greatest () que se utiliza para encontrar los valores más altos en múltiples columnas en todas las filas en un Pyspark RDD o en un marcado de datos Pyspark.

Está disponible en el pyspark.sql.funciones módulo.

Sintaxis:

dataframe_obj.SELECT (Greatest (DataFrame_obj.columna1, dataframe_obj.columna2,…))

Parámetro:

Toma columnas como parámetros.

Podemos acceder a las columnas usando el "."Operador (columna1, columna2,. representa los nombres de la columna).

Datos:

Aquí, creamos un marco de datos Pyspark que tiene 5 columnas: ['temas_id', 'nombre', 'edad', 'tecnología1', 'tecnología2'] con 10 filas.

importar pyspark
de Pyspark.SQL Import Sparksession
Spark_app = Sparksession.constructor.nombre de la aplicación('_').getorcreate ()
Estudiantes = [(4, 'Sravan', 23, 'Php', 'Pruebas'),
(4, 'Sravan', 23, 'Php', 'Pruebas'),
(46, 'Mounika', 22, '.Net ',' html '),
(4, 'Deepika', 21, 'Oracle', 'html'),
(46, 'Mounika', 22, 'Oracle', 'Prueba'),
(12, 'Chandrika', 22, 'Hadoop', 'C#'),
(12, 'Chandrika', 22, 'Oracle', 'Prueba'),
(4, 'Sravan', 23, 'Oracle', 'C#'),
(4, 'Deepika', 21, 'Php', 'C#'),
(46, 'Mounika', 22, '.Net ',' prueba ')
]
dataFrame_OBJ = Spark_App.creatataFrame (estudiantes, ['temas_id', 'nombre', 'edad', 'tecnología1', 'tecnología2'])
imprimir ("---------- DataFrame ----------")
dataframe_obj.espectáculo()

Producción:

Ahora, veremos los ejemplos para devolver los valores más grandes en dos o múltiples columnas del marcado de datos anterior.

Ejemplo 1:

Creamos el marcado de datos dado. Ahora, devolvemos los mayores valores del asunto_id y edad columnas.

# Importar la mejor función del módulo - Pyspark.sql.funciones
de Pyspark.sql.las funciones importan el mejor
#Compare Las columnas - Asunto_id y edad y devolver los mayores valores en cada fila.
dataframe_obj.SELECT (dataFrame_obj.temas_id, dataframe_obj.edad, mejor (dataframe_obj.temas_id, dataframe_obj.edad)).espectáculo()

Producción:

Explicación:

Puede comparar los dos valores de la columna en cada fila.

Mayor (4,23) - 23
Mayor (4,23) - 23
Mayor (46,22) -46
El mejor (4,21) - 21
Mayor (46,22) - 46
El mejor (12,22) - 22
El mejor (12,22) - 22
Mayor (4,23) - 23
El mejor (4,21) - 21
Mayor (46,22) - 46.

Ejemplo 2:

Creamos el marcado de datos dado. Ahora, devolvemos los mayores valores del nombre , Tecnología1, y Tecnología2 columnas.

# Importar la mejor función del módulo - Pyspark.sql.funciones
de Pyspark.sql.las funciones importan el mejor
#Compare Las columnas: nombre, tecnología1, tecnología2 ​​y edad y devuelven los valores más grandes en cada fila.
dataframe_obj.SELECT (dataFrame_obj.Nombre, DataFrame_obj.tecnología1, dataframe_obj.Tecnología2,
mejor (dataframe_obj.Nombre, DataFrame_obj.tecnología1, dataframe_obj.tecnología2)).espectáculo()

Producción:

Aquí, las cadenas se comparan en base a los valores ASCII.

El mejor (Sravan, PHP, Pruebas) - Sravan
El mejor (Sravan, PHP, Pruebas) - Sravan
El mejor (Mounika, .Net, html) - Mounika
El mejor (Deepika, Oracle, HTML) - Deepika
mejor (Mounika, Oracle, Pruebas) - Mounika
El mejor (Chandrika, Hadoop, C#) - Chandrika
El mejor (Chandrika, Oracle, Pruebas) - Chandrika
El mejor (Sravan, Oracle, C#) - Sravan
El mejor (Deepika, PHP, C#) - Deepika
El mejor (Mounika,.Net, prueba) -Mounika.

Código completo:

importar pyspark
de Pyspark.SQL Import Sparksession
Spark_app = Sparksession.constructor.nombre de la aplicación('_').getorcreate ()
Estudiantes = [(4, 'Sravan', 23, 'Php', 'Pruebas'),
(4, 'Sravan', 23, 'Php', 'Pruebas'),
(46, 'Mounika', 22, '.Net ',' html '),
(4, 'Deepika', 21, 'Oracle', 'html'),
(46, 'Mounika', 22, 'Oracle', 'Prueba'),
(12, 'Chandrika', 22, 'Hadoop', 'C#'),
(12, 'Chandrika', 22, 'Oracle', 'Prueba'),
(4, 'Sravan', 23, 'Oracle', 'C#'),
(4, 'Deepika', 21, 'Php', 'C#'),
(46, 'Mounika', 22, '.Net ',' prueba ')
]
dataFrame_OBJ = Spark_App.creatataFrame (estudiantes, ['temas_id', 'nombre', 'edad', 'tecnología1', 'tecnología2'])
imprimir ("---------- DataFrame ----------")
dataframe_obj.espectáculo()
# Importar la mejor función del módulo - Pyspark.sql.funciones
de Pyspark.sql.las funciones importan el mejor
#Compare Las columnas - Asunto_id y edad y devolver los mayores valores en cada fila.
dataframe_obj.SELECT (dataFrame_obj.temas_id, dataframe_obj.edad, mejor (dataframe_obj.temas_id, dataframe_obj.edad)).espectáculo()
#Compare Las columnas: nombre, tecnología1, tecnología2 ​​y edad y devuelven los valores más grandes en cada fila.
dataframe_obj.SELECT (dataFrame_obj.Nombre, DataFrame_obj.tecnología1, dataframe_obj.Tecnología2,
mejor (dataframe_obj.Nombre, DataFrame_obj.tecnología1, dataframe_obj.tecnología2)).espectáculo()

Conclusión

La función más grande () se usa para encontrar los valores más altos en múltiples columnas en todas las filas en un PySpark RDD o en un Pyspark DataFrame. Compara las columnas con tipos de datos similares. De lo contrario, plantea la excepción de análisis - Todas las expresiones deberían tener el mismo tipo.