Pyspark Array_union, Array_intersect e Array_except

Pyspark Array_union, Array_intersect e Array_except
No Python, Pyspark é um módulo Spark usado para fornecer um tipo semelhante de processamento como o Spark usando o DataFrame. Ele fornece os métodos Structype () e Structfield () que são usados ​​para definir as colunas no Pyspark DataFrame. Ao usar esses métodos, podemos definir os nomes das colunas e os tipos de dados das colunas específicas.

Vamos discuti -los um por um

Structype ()

Este método é usado para definir a estrutura do quadro de dados Pyspark. Ele aceitará uma lista de tipos de dados, juntamente com nomes de colunas para o DataFrame especificado. Isso é conhecido como o esquema do DataFrame. Ele armazena uma coleção de campos

Structfield ()

Este método é usado dentro do método structtype () do pyspark dataframe. Ele aceitará nomes de colunas com o tipo de dados.

ArrayType ()

Este método é usado para definir a estrutura da matriz do quadro de dados Pyspark. Ele aceitará uma lista de tipos de dados. Ele armazena uma coleção de campos. Podemos colocar tipos de dados dentro do ArrayType ().

Então, neste artigo, temos que criar um DataFrame com uma matriz. Vamos criar um quadro de dados com 3 colunas. A primeira coluna é o Student_category, que se refere ao campo inteiro para armazenar os alunos e a segunda coluna - student_first_name, terceira coluna - Student_last_name é usada para armazenar valores de string em uma matriz criada usando ArrayType ().

#import o módulo Pyspark
Importar Pyspark
#Import SparkSession para criar uma sessão
de Pyspark.SQL Import SparkSession
#e importar tipos de estrutura e outros tipos de dados
de Pyspark.SQL.Tipos de importação estruttype, structfield, stringtype, integertype, floottype, ArrayType
de Pyspark.SQL.Funções Importar *
#Crie um aplicativo chamado Linuxhint
Spark_App = SparkSession.construtor.AppName ('Linuxhint').getorcreate ()
# Considere uma matriz com 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 o StructType e Structfields
#para os dados acima
esquema = structtype ([structfield ("student_category", integertype ()), structfield ("student_first_name", arraytype (stringtype ()), structfield ("student_last_name", arraytype (stringtype ())))))
#Crie o DataFrame e adicione esquema ao DataFrame
df = spark_app.Createdataframe (my_array_data, esquema = esquema)
df.mostrar()

Saída

Array_union ()

Array_union () é usado para ingressar nas duas colunas do tipo Array no quadro de dados do Pyspark, retornando valores de ambas as colunas da matriz em uma matriz. São necessárias duas colunas do tipo matriz como parâmetros.

Ele retorna todos os valores únicos (apenas uma vez).

Sintaxe

Array_union (Array_Column1, Array_Column2)

Parâmetros

  1. Array_column1 é a primeira coluna de matriz que tem matrizes com valores
  2. Array_column2 é a segunda coluna da matriz que tem matrizes com valores.

A função Array_union () é usada com o método select () para fazer a ação.

Exemplo
Neste exemplo, juntaremos duas colunas do tipo de matriz - Student_First_Name e Student_Last_Name

#import o módulo Pyspark
Importar Pyspark
#Import SparkSession para criar uma sessão
de Pyspark.SQL Import SparkSession
#e importar tipos de estrutura e outros tipos de dados
de Pyspark.SQL.Tipos de importação estruttype, structfield, stringtype, integertype, floottype, ArrayType
de Pyspark.SQL.Funções Importar *
#Crie um aplicativo chamado Linuxhint
Spark_App = SparkSession.construtor.AppName ('Linuxhint').getorcreate ()
# Considere uma matriz com 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 o StructType e Structfields
#para os dados acima
esquema = structtype ([structfield ("student_category", integertype ()), structfield ("student_first_name", arraytype (stringtype ()), structfield ("student_last_name", arraytype (stringtype ())))))
#Crie o DataFrame e adicione esquema ao DataFrame
df = spark_app.Createdataframe (my_array_data, esquema = esquema)
#apply Array_union em student_first_name e student_last_name
df.Selecione ("student_first_name", "student_last_name",
Array_union ("student_first_name", "student_last_name"))).mostrar()

Saída

Nós podemos ver isso

  1. Na primeira linha -[a] união [a]: [a] (retornar exclusivo)
  2. Na segunda linha - [b, l, b] união [a]: [b, l, a]
  3. Na terceira fila - [k, a, k] união [k, a, k]: [k, a] (apenas k e a são únicos)
  4. Na quarta fila -[k] união [k, a, k]: [k, a] (apenas k e a são únicos)
  5. Na quinta fila -[b, p] união [a]: [b, p, a]

Array_intersect ()

Array_intersect () é usado para ingressar nas duas colunas do tipo de matriz no quadro de dados do Pyspark, retornando apenas valores comuns de ambos os matrizes para uma nova matriz. São necessárias duas colunas do tipo de matriz como parâmetros.

Sintaxe

Array_intersect (Array_Column1, Array_Column2)

Parâmetros

  1. Array_column1 é a primeira coluna de matriz que tem matrizes com valores
  2. Array_column2 é a segunda coluna da matriz que tem matrizes com valores.

Array_intersect () A função é usada com o método select () para fazer a ação.

Exemplo
Neste exemplo, cruzaremos duas colunas do tipo Array - Student_First_Name e Student_Last_Name

#import o módulo Pyspark
Importar Pyspark
#Import SparkSession para criar uma sessão
de Pyspark.SQL Import SparkSession
#e importar tipos de estrutura e outros tipos de dados
de Pyspark.SQL.Tipos de importação estruttype, structfield, stringtype, integertype, floottype, ArrayType
de Pyspark.SQL.Funções Importar *
#Crie um aplicativo chamado Linuxhint
Spark_App = SparkSession.construtor.AppName ('Linuxhint').getorcreate ()
# Considere uma matriz com 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 o StructType e Structfields
#para os dados acima
esquema = structtype ([structfield ("student_category", integertype ()), structfield ("student_first_name", arraytype (stringtype ()), structfield ("student_last_name", arraytype (stringtype ())))))
#Crie o DataFrame e adicione esquema ao DataFrame
df = spark_app.Createdataframe (my_array_data, esquema = esquema)
#Apply Array_intersect em student_first_name e student_last_name
df.Selecione ("student_first_name", "student_last_name",
Array_intersect ("student_first_name", "student_last_name"))).mostrar()

Saída

Nós podemos ver isso

  1. Na primeira linha -[a] intercepto [a]: [a] (a é comum)
  2. Na segunda linha - [b, l, b] intercepta [a]: [] (nenhum elemento é comum)
  3. Na terceira fila - [k, a, k] intercepta [k, a, k]: [k, a] (k e a são comuns)
  4. Na quarta fila -[k] intercepto [k, a, k]: [k] (apenas k é comum)
  5. Na quinta fila -[b, p] intercepto [a]: [] (nenhum elemento é comum)

Array_except ()

Array_except () é usado para ingressar nas duas colunas do tipo de matriz no quadro de dados do Pyspark retornando valores no Array1, mas não na Array2.

Ele retorna todos os valores únicos (apenas uma vez).

Sintaxe

Array_except (Array_Column1, Array_Column2)

Parâmetros

  1. Array_column1 é a primeira coluna de matriz que tem matrizes com valores
  2. Array_column2 é a segunda coluna da matriz que tem matrizes com valores.

A função Array_except () é usada com o método select () para fazer a ação.

Exemplo
Neste exemplo, realizaremos Array_Except duas colunas do tipo Array -

  1. Student_last_name e student_first_name
  2. Student_first_name e student_last_name
#import o módulo Pyspark
Importar Pyspark
#Import SparkSession para criar uma sessão
de Pyspark.SQL Import SparkSession
#e importar tipos de estrutura e outros tipos de dados
de Pyspark.SQL.Tipos de importação estruttype, structfield, stringtype, integertype, floottype, ArrayType
de Pyspark.SQL.Funções Importar *
#Crie um aplicativo chamado Linuxhint
Spark_App = SparkSession.construtor.AppName ('Linuxhint').getorcreate ()
# Considere uma matriz com 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 o StructType e Structfields
#para os dados acima
esquema = structtype ([structfield ("student_category", integertype ()), structfield ("student_first_name", arraytype (stringtype ()), structfield ("student_last_name", arraytype (stringtype ())))))
#Crie o DataFrame e adicione esquema ao DataFrame
df = spark_app.Createdataframe (my_array_data, esquema = esquema)
#Apply Array_Except em student_last_name e student_first_name
df.Selecione ("Student_Last_Name", "Student_First_Name",
Array_except ("student_last_name", "student_first_name"))).mostrar()
#Apply Array_Except em student_first_name e student_last_name
df.Selecione ("student_first_name", "student_last_name",
Array_except ("student_first_name", "student_last_name"))).mostrar()

Saída

No primeiro resultado

  1. [A] exceto [a] - [] (como A da coluna1 também existe na coluna2)
  2. [A] exceto [b, l, b] - [a] (como a da coluna1 não existe na coluna2)
  3. [K, a, k] exceto [k, a, k] - [] (como k, a, k da coluna1 também existe na coluna2)
  4. [K, a, k] exceto [k] - [a] (como a da coluna 1 não existe na coluna2)
  5. [A] exceto [b, p] - [a] (como A da coluna1 não existe na coluna2)

No segundo resultado

  1. [A] exceto [a] - [] (como A da coluna1 também existe na coluna2)
  2. [B, l, b] exceto [a] - [b, l] (como b, l da coluna1 não existe na coluna 2)
  3. [K, a, k] exceto [k, a, k] - [] (como k, a, k da coluna1 também existe na coluna2)
  4. [K] exceto [k, a, k] - [] (como k da coluna1 também existe na coluna2)
  5. [B, p] Exceto [a] - [b, p] (como b, p da coluna 1 não existe na coluna 2)

Conclusão

Neste tutorial, vimos três funções diferentes executadas em colunas do tipo Array no Pyspark Dataframe. Array_union () é usado para ingressar nas duas colunas do tipo Array no quadro de dados do Pyspark, retornando valores de ambas as colunas da matriz em uma matriz. Array_intersect () é usado para ingressar nas duas colunas do tipo Array no quadro de dados do Pyspark, retornando apenas valores comuns de ambos os matrizes para uma nova matriz. Array_except () é usado para ingressar nas duas colunas do tipo Array no quadro de dados do Pyspark retornando valores no Array1, mas não na Array2.