Pyspark - función de plomo

Pyspark - función de plomo
La función Lead () en Pyspark está disponible en el módulo de la ventana que se utiliza para devolver los valores de las siguientes filas a las filas actuales. Primero, la función LED () devuelve el NULL para la última fila/s en una partición. Se necesita un parámetro de desplazamiento que representa el número total de filas de manera que los próximos valores de fila se devuelven a las filas reales. Los nulos se colocan para la última última fila (desplazamiento).

Es posible particionar las filas en el marco de datos utilizando la función de la ventana. Está disponible en el pyspark.sql.ventana módulo.

Sintaxis:

dataframe_obj.WithColumn ("Lead_column", plomo ("columna", offset).sobre (partición))

Se necesitan dos parámetros:

  1. El LED_COLUMN es el nombre de la columna en Pyspark DataFrame en el que los valores de la fila con plomo se colocan en función de los valores en esta columna.
  2. El desplazamiento especifica el entero para devolver ese número de las siguientes filas a los valores de la fila actual.

Pasos:

  1. Cree un marco de datos de Pyspark que tenga algunos valores similares en al menos una columna.
  2. Partition los datos utilizando el método PartitionBy () disponible en la función de la ventana y pídalos en función de la columna utilizando la función OrderBy ().

Sintaxis:

partición = ventana.Partitionby ("columna").Orderby ("columna")

Podemos ordenar los datos particionados con la columna particionada o cualquier otra columna.

Ahora, puede usar la función Lead () en las filas particionadas utilizando el encima() función.

Agregamos una columna para almacenar el número de fila usando el WithColumn () función.

Sintaxis:

dataframe_obj.WithColumn ("Lead_column", plomo ("columna", offset).sobre (partición))

Aquí, el nombre especifica el nombre de la fila y el DataFrame_obj es nuestro Pyspark DataFrame.

Implementemos el código.

Ejemplo 1:

Aquí, creamos un marco de datos de Pyspark que tiene 5 columnas: ['ujem_id', 'nombre', 'edad', 'tecnología1', 'tecnología2'] con 10 filas y divide las filas basadas en el Tecnología1 Usando la función de ventana. Después de eso, dirigimos 1 fila.

importar pyspark
de Pyspark.Importación SQL *
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 función de la ventana
de Pyspark.sql.Ventana de importación de ventana
#Importa el líder de Pyspark.sql.funciones
de Pyspark.sql.Funciones Importación de plomo
#Partition El DataFrame basado en los valores en la columna Technology1 y
#Oder las filas en cada partición basada en la columna TIEMPLE_ID
partición = ventana.Partitionby ("Technology1").Orderby ('temas_id')
imprimir ("---------- DataFrame dividido ----------")
#Ahora Mencione el plomo con Offset-1 basado en temas_id
dataframe_obj.WithColumn ("lidera", plomo ("temas_id", 1).sobre (partición)).espectáculo()

Producción:

Explicación:

La primera salida representa los datos reales presentes en DataFrame. En la segunda salida, la partición se realiza en base a la Tecnología1 columna.

El número total de particiones es 4.

Partición 1:

El .La red ocurrió dos veces en la primera partición. Desde que especificamos la compensación inicial como 1, la última .El valor neto es nulo y el primero .El valor neto es el valor de la siguiente fila TEMG_ID - 46.

Partición 2:

Hadoop ocurrió una vez en la segunda partición. Entonces, el plomo es nulo.

Partición 3:

Oracle ocurrió cuatro veces en la tercera partición.

  1. Para el último oráculo, el plomo es nulo.
  2. Para el primer oráculo, el valor de plomo es 4 (ya que el valor de la siguiente fila es 4).
  3. Para el tercer oráculo, el valor de plomo es 12 (ya que el valor de la siguiente fila temas_id es 12).

Para el cuarto oráculo, el valor de plomo es 46 (ya que el valor de la siguiente fila es 46).

Partición 4:

PHP ocurrió tres veces en la cuarta partición.

  1. El valor de plomo para el 3er PHP es nulo.
  2. El valor de plomo para el primer PHP es 4 (ya que el valor de la siguiente fila WATM_ID es 4).
  3. El valor de plomo para el segundo PHP es 4 (ya que el valor de la siguiente fila es 4).

Ejemplo 2:

Dirigir las filas por 2. Asegúrese de crear el Pyspark DataFrame como se ve en el Ejemplo 1.

# Importar la función de la ventana
de Pyspark.sql.Ventana de importación de ventana
#Importa el líder de Pyspark.sql.funciones
de Pyspark.sql.Funciones Importación de plomo
#Partition El DataFrame basado en los valores en la columna Technology1 y
#Oder las filas en cada partición basada en la columna TIEMPLE_ID
partición = ventana.Partitionby ("Technology1").Orderby ('temas_id')
imprimir ("---------- DataFrame dividido ----------")
#Ahora mención de plomo con offset-2 basado en temas_id
dataframe_obj.WithColumn ("lidera", lidera ("temas_id", 2).sobre (partición)).espectáculo()

Producción:

Explicación:

La partición se realiza en base a la Tecnología1 columna.

El número total de particiones es 4.

Partición 1:

El .La red ocurrió dos veces en la primera partición. Dado que especificamos la compensación inicial como 2, el desplazamiento es nulo para ambos valores.

Partición 2:

Hadoop ocurrió una vez en la segunda partición. Entonces, el plomo es nulo.

Partición 3:

Oracle ocurrió cuatro veces en la tercera partición.

  • En los últimos dos oráculo, el liderazgo es nulo.
  • Para el primer oráculo, el valor de plomo es 12 (ya que las siguientes 2 filas, el valor de la materia_id es 12).
  • Para el segundo oráculo, el valor de plomo es 46 (ya que las siguientes 2 filas, el valor de la materia_id es 46).

Partición 4:

PHP ocurrió tres veces en la cuarta partición.

  • En los últimos dos oráculo, el liderazgo es nulo.
  • Para el primer PHP, el valor de plomo es 4 (ya que las siguientes 2 filas, el valor de TIEÑO_ID es 4).

Ejemplo 3:

Dirigir las filas por 2 según la columna de edad. Asegúrese de crear el Pyspark DataFrame como se ve en el Ejemplo 1.

# Importar la función de la ventana
de Pyspark.sql.Ventana de importación de ventana
#Importa el líder de Pyspark.sql.funciones
de Pyspark.sql.Funciones Importación de plomo
#Partition El DataFrame basado en los valores en la columna Technology1 y
#Oder las filas en cada partición basada en la columna TIEMPLE_ID
partición = ventana.Partitionby ("Technology1").Orderby ('temas_id')
imprimir ("---------- DataFrame dividido ----------")
#Ahora mención del plomo con offset-2 basado en la edad
dataframe_obj.WithColumn ("plomo", plomo ("edad", 2).sobre (partición)).espectáculo()

Producción:

Explicación:

La partición se realiza en base a la Tecnología1 columna y el plomo se define en función de la columna de edad.

El número total de particiones es 4.

Partición 1:

El .La red ocurrió dos veces en la primera partición. Dado que especificamos la compensación inicial como 2, el desplazamiento es nulo para ambos valores.

Partición 2:

Hadoop ocurrió una vez en la segunda partición. Entonces, el plomo es nulo.

Partición 3:

Oracle ocurrió cuatro veces en la tercera partición.

  • Para los dos últimos oráculo, el plomo es nulo.
  • Para el primer oráculo, el valor de plomo es 22 (ya que el valor de edad de las siguientes 2 filas es 22).
  • Para el segundo oráculo, el valor de plomo es 22 (ya que el valor de edad de las siguientes 2 filas es 22).

Partición 4:

PHP ocurrió tres veces en la cuarta partición.

  • Para los dos últimos oráculo, el plomo es nulo.
  • Para el primer PHP, el valor de plomo es 21 (ya que el valor de edad de las siguientes 2 filas es 21).

Conclusión

Aprendimos a obtener los valores de los principales en Pyspark DataFrame en las filas particionadas. La función LED () en Pyspark está disponible en el módulo de ventana que se utiliza para devolver los valores de la siguiente fila a las filas actuales. Se necesita un parámetro de desplazamiento que representa el número total de filas de manera que los próximos valores de fila se devuelven a las filas reales. Para la última última fila/s, se colocan los nulos (desplazados). Aprendimos los diferentes ejemplos estableciendo las diferentes compensaciones.