Pyspark array_union, array_intersect y array_except

Pyspark array_union, array_intersect y array_except
En Python, Pyspark es un módulo Spark utilizado para proporcionar un tipo similar de procesamiento como Spark usando DataFrame. Proporciona los métodos structtype () y structfield () que se utilizan para definir las columnas en el marco de datos de Pyspark. Al usar estos métodos, podemos definir los nombres de la columna y los tipos de datos de las columnas particulares.

Discutamos uno por uno

Structtype ()

Este método se utiliza para definir la estructura del marco de datos de Pyspark. Aceptará una lista de tipos de datos junto con los nombres de columnas para el marco de datos dado. Esto se conoce como el esquema del DataFrame. Almacena una colección de campos

Structfield ()

Este método se utiliza dentro del método structtype () del Pyspark DataFrame. Aceptará nombres de columnas con el tipo de datos.

ArrayType ()

Este método se utiliza para definir la estructura de matriz del marco de datos de Pyspark. Aceptará una lista de tipos de datos. Almacena una colección de campos. Podemos colocar los tipos de datos dentro de ArrayType ().

Entonces, en este artículo, tenemos que crear un marco de datos con una matriz. Creemos un marco de datos con 3 columnas. La primera columna es Student_Category, que se refiere al campo entero para almacenar la identificación de los estudiantes y la segunda columna: student_first_name, tercera columna - student_last_name se usa para almacenar valores de cadena en una matriz creada usando ArrayType ().

#Importa el módulo Pyspark
importar pyspark
#Import Sparksession para crear una sesión
de Pyspark.SQL Import Sparksession
#y importar tipos de estructura y otros tipos de datos
de Pyspark.sql.tipos import structtType, structfield, stringType, integertype, floattype, arraytype
de Pyspark.sql.Importación de funciones *
#cree una aplicación llamada Linuxhint
Spark_app = Sparksession.constructor.AppName ('Linuxhint').getorcreate ()
# Considere una matriz con 5 elementos
my_array_data = [(1, ['a'], ['a']), (2, ['b', 'l', 'b'], ['a']), (3, ['k' , 'A', 'k'], ['k', 'a', 'k']), (4, ['k'], ['k', 'a', 'k']), (( 3, ['b', 'p'], ['a'])]
#Define el structtype y structfields
#para los datos anteriores
schema = structtype ([structfield ("student_category", integertype ()), structfield ("student_first_name", arrayType (stringType ())), structfield ("student_last_name", arrayType (stringType ())))))
#Cree el DataFrame y agregue esquema a DataFrame
DF = Spark_App.creatataframe (my_array_data, esquema = esquema)
df.espectáculo()

Producción

array_union ()

array_union () se usa para unir las dos columnas de tipo matriz en el marco de datos de Pyspark devolviendo los valores de ambas columnas de matriz en una matriz en una matriz. Se necesitan dos columnas de tipo matriz como parámetros.

Devuelve todos los valores únicos (solo una vez).

Sintaxis

array_union (array_column1, array_column2)

Parámetros

  1. array_column1 es la primera columna de matriz que tiene matrices con valores
  2. array_column2 es la segunda columna de matriz que tiene matrices con valores.

array_union () La función se usa con el método select () para hacer la acción.

Ejemplo
En este ejemplo, uniremos dos columnas de tipo matriz: student_first_name y student_last_name

#Importa el módulo Pyspark
importar pyspark
#Import Sparksession para crear una sesión
de Pyspark.SQL Import Sparksession
#y importar tipos de estructura y otros tipos de datos
de Pyspark.sql.tipos import structtType, structfield, stringType, integertype, floattype, arraytype
de Pyspark.sql.Importación de funciones *
#cree una aplicación llamada Linuxhint
Spark_app = Sparksession.constructor.AppName ('Linuxhint').getorcreate ()
# Considere una matriz con 5 elementos
my_array_data = [(1, ['a'], ['a']), (2, ['b', 'l', 'b'], ['a']), (3, ['k' , 'A', 'k'], ['k', 'a', 'k']), (4, ['k'], ['k', 'a', 'k']), (( 3, ['b', 'p'], ['a'])]
#Define el structtype y structfields
#para los datos anteriores
schema = structtype ([structfield ("student_category", integertype ()), structfield ("student_first_name", arrayType (stringType ())), structfield ("student_last_name", arrayType (stringType ())))))
#Cree el DataFrame y agregue esquema a DataFrame
DF = Spark_App.creatataframe (my_array_data, esquema = esquema)
#Apply Array_union en student_first_name y student_last_name
df.Seleccione ("Student_First_Name", "Student_Last_Name",
array_union ("student_first_name", "student_last_name")).espectáculo()

Producción

Podemos ver eso

  1. En la primera fila -[a] unión [a]: [a] (retorno único)
  2. En la segunda fila - [B, L, B] Union [A]: [B, L, A]
  3. En la tercera fila - [K, A, K] Union [K, A, K]: [K, A] (solo K y A son únicos)
  4. En la cuarta fila -[k] union [k, a, k]: [k, a] (solo k y a son únicos)
  5. En la quinta fila -[b, p] unión [a]: [b, p, a]

array_intersect ()

array_intersect () se usa para unir las dos columnas de tipo de matriz en el marco de datos de Pyspark devolviendo solo valores comunes de ambas matrices en una nueva matriz. Se necesitan dos columnas de tipo matriz como parámetros.

Sintaxis

array_intersect (array_column1, array_column2)

Parámetros

  1. array_column1 es la primera columna de matriz que tiene matrices con valores
  2. array_column2 es la segunda columna de matriz que tiene matrices con valores.

array_intersect () La función se usa con el método select () para hacer la acción.

Ejemplo
En este ejemplo, intersectaremos dos columnas de tipo matriz: student_first_name y student_last_name

#Importa el módulo Pyspark
importar pyspark
#Import Sparksession para crear una sesión
de Pyspark.SQL Import Sparksession
#y importar tipos de estructura y otros tipos de datos
de Pyspark.sql.tipos import structtType, structfield, stringType, integertype, floattype, arraytype
de Pyspark.sql.Importación de funciones *
#cree una aplicación llamada Linuxhint
Spark_app = Sparksession.constructor.AppName ('Linuxhint').getorcreate ()
# Considere una matriz con 5 elementos
my_array_data = [(1, ['a'], ['a']), (2, ['b', 'l', 'b'], ['a']), (3, ['k' , 'A', 'k'], ['k', 'a', 'k']), (4, ['k'], ['k', 'a', 'k']), (( 3, ['b', 'p'], ['a'])]
#Define el structtype y structfields
#para los datos anteriores
schema = structtype ([structfield ("student_category", integertype ()), structfield ("student_first_name", arrayType (stringType ())), structfield ("student_last_name", arrayType (stringType ())))))
#Cree el DataFrame y agregue esquema a DataFrame
DF = Spark_App.creatataframe (my_array_data, esquema = esquema)
#Apply Array_interSect en student_first_name y student_last_name
df.Seleccione ("Student_First_Name", "Student_Last_Name",
array_intersect ("student_first_name", "student_last_name")).espectáculo()

Producción

Podemos ver eso

  1. En la primera fila -[a] intersectar [a]: [a] (a es común)
  2. En la segunda fila - [B, L, B] se cruza [a]: [] (ningún elemento es común)
  3. En la tercera fila - [k, a, k] se cruza [k, a, k]: [k, a] (k y a son comunes)
  4. En la cuarta fila -[k] intersectar [k, a, k]: [k] (solo k es común)
  5. En la quinta fila -[b, p] se cruza [a]: [] (ningún elemento es común)

array_except ()

Array_except () se usa para unir las dos columnas de tipo de matriz en el marco de datos de Pyspark devolviendo los valores en Array1 pero no en Array2.

Devuelve todos los valores únicos (solo una vez).

Sintaxis

array_except (array_column1, array_column2)

Parámetros

  1. array_column1 es la primera columna de matriz que tiene matrices con valores
  2. array_column2 es la segunda columna de matriz que tiene matrices con valores.

array_except () la función se usa con el método select () para hacer la acción.

Ejemplo
En este ejemplo, realizaremos columnas de tipo matriz array_except -

  1. Student_last_name y student_first_name
  2. Student_first_name y student_last_name
#Importa el módulo Pyspark
importar pyspark
#Import Sparksession para crear una sesión
de Pyspark.SQL Import Sparksession
#y importar tipos de estructura y otros tipos de datos
de Pyspark.sql.tipos import structtType, structfield, stringType, integertype, floattype, arraytype
de Pyspark.sql.Importación de funciones *
#cree una aplicación llamada Linuxhint
Spark_app = Sparksession.constructor.AppName ('Linuxhint').getorcreate ()
# Considere una matriz con 5 elementos
my_array_data = [(1, ['a'], ['a']), (2, ['b', 'l', 'b'], ['a']), (3, ['k' , 'A', 'k'], ['k', 'a', 'k']), (4, ['k'], ['k', 'a', 'k']), (( 3, ['b', 'p'], ['a'])]
#Define el structtype y structfields
#para los datos anteriores
schema = structtype ([structfield ("student_category", integertype ()), structfield ("student_first_name", arrayType (stringType ())), structfield ("student_last_name", arrayType (stringType ())))))
#Cree el DataFrame y agregue esquema a DataFrame
DF = Spark_App.creatataframe (my_array_data, esquema = esquema)
#Apply Array_except en student_last_name y student_first_name
df.Seleccione ("Student_Last_Name", "Student_First_Name",
array_except ("student_last_name", "student_first_name")).espectáculo()
#Apply Array_except en student_first_name y student_last_name
df.Seleccione ("Student_First_Name", "Student_Last_Name",
array_except ("student_first_name", "student_last_name")).espectáculo()

Producción

En el primer resultado

  1. [A] excepto [a] - [] (ya que A de columna1 existe en la columna 2 también)
  2. [A] excepto [b, l, b] - [a] (ya que a de columna1 no existe en la columna 2)
  3. [K, a, k] excepto [k, a, k] - [] (ya que k, a, k de la columna1 también existe en la columna2)
  4. [K, a, k] excepto [k] - [a] (ya que A de columna1 no existe en la columna 2)
  5. [A] excepto [b, p] - [a] (ya que A de columna1 no existe en la columna 2)

En el segundo resultado

  1. [A] excepto [a] - [] (ya que A de columna1 existe en la columna 2 también)
  2. [B, L, B] excepto [A] - [B, L] (ya que B, L de la columna1 no existe en la columna 2)
  3. [K, a, k] excepto [k, a, k] - [] (ya que k, a, k de la columna1 también existe en la columna2)
  4. [K] excepto [k, a, k] - [] (ya que k de la columna1 también existe en la columna2)
  5. [B, p] excepto [a] - [b, p] (ya que b, p de la columna1 no existe en la columna 2)

Conclusión

En este tutorial, vimos tres funciones diferentes realizadas en columnas de tipo matriz en Pyspark DataFrame. array_union () se usa para unir las dos columnas de tipo matriz en el marco de datos de Pyspark devolviendo los valores de ambas columnas de matriz en una matriz en una matriz. array_intersect () se usa para unir las dos columnas de tipo matriz en el marco de datos de Pyspark devolviendo solo los valores comunes de ambas matrices en una nueva matriz. Array_except () se usa para unir las dos columnas de tipo matriz en el marco de datos de Pyspark devolviendo los valores en Array1 pero no en Array2.