Pyspark Array_Contains

Pyspark Array_Contains
Este artigo apresentará e demonstrará o Pyspark's Array_contains () método. O método é usado para verificar se existem valores específicos dentro de uma matriz no Pyspark.

Neste artigo, temos que criar um quadro de dados com uma matriz. Vamos criar um quadro de dados com 2 colunas. A primeira coluna é Student_category, que se refere ao campo inteiro para armazenar IDs de estudante. A segunda coluna - Student_full_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 Array_Contains
#Crie um aplicativo chamado Linuxhint
Spark_App = SparkSession.construtor.AppName ('Linuxhint').getorcreate ()
# Considere uma matriz com 5 elementos
my_array_data = [(1, ['a']), (2, ['b', 'l', 'b']), (3, ['k', 'a', 'k']), ( 4, ['k']), (3, ['b', 'p']]]]
#Define o StructType e Structfields
#para os dados acima
esquema = structtype ([structfield ("student_category", integertype ()), structfield ("student_full_name", arraytype (stringtype ())))))
#Crie o DataFrame e adicione esquema ao DataFrame
df = spark_app.Createdataframe (my_array_data, esquema = esquema)
df.mostrar()

Saída:

Agora, veremos o que Array_contains () faz.

Array_contains () é usado para verificar se a matriz possui o elemento especificado. Se sim, ele retornará verdadeiro, caso contrário, falsa.

Isso é possível verificar usando o método select (). Dentro deste método, podemos usar a função Array_contains () e retornar o resultado.

Sintaxe:

quadro de dados.Selecione (Array_contains (Array_column, value '))

Parâmetros:

  1. Array_column contém valores do tipo de matriz
  2. O valor é usado para verificar se existe no Array_column ou não.

Retornar:

Ele retornará verdadeiro/falso em todas as linhas em uma coluna de matriz.

Exemplo 1:

Neste exemplo, verificaremos se a coluna student_full_name possui 'l' em todas as linhas usando a função Array_contains ().

#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 Array_Contains
#Crie um aplicativo chamado Linuxhint
Spark_App = SparkSession.construtor.AppName ('Linuxhint').getorcreate ()
# Considere uma matriz com 5 elementos
my_array_data = [(1, ['a']), (2, ['b', 'l', 'b']), (3, ['k', 'a', 'k']), ( 4, ['k']), (3, ['b', 'p']]]]
#Define o StructType e Structfields
#para os dados acima
esquema = structtype ([structfield ("student_category", integertype ()), structfield ("student_full_name", arraytype (stringtype ())))))
#Crie o DataFrame e adicione esquema ao DataFrame
df = spark_app.Createdataframe (my_array_data, esquema = esquema)
# Verifique o Student_full_name - L em todas as linhas usando Array_contains () Função.
df.Selecione ("student_full_name", Array_contains ('student_full_name', 'l'))).mostrar()

Saída:

Aqui, selecionamos as colunas do Student_full_Name. A primeira coluna é a coluna real e a segunda coluna é o resultado retornado pela função Array_contains ().

Somente a segunda linha tem valor 'l', por isso retorna verdadeiro e o restante resulta em false.

Exemplo 2:

Neste exemplo, verificaremos se a coluna student_full_name possui 'k' em todas as linhas usando a função Array_contains ().

#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 Array_Contains
#Crie um aplicativo chamado Linuxhint
Spark_App = SparkSession.construtor.AppName ('Linuxhint').getorcreate ()
# Considere uma matriz com 5 elementos
my_array_data = [(1, ['a']), (2, ['b', 'l', 'b']), (3, ['k', 'a', 'k']), ( 4, ['k']), (3, ['b', 'p']]]]
#Define o StructType e Structfields
#para os dados acima
esquema = structtype ([structfield ("student_category", integertype ()), structfield ("student_full_name", arraytype (stringtype ())))))
#Crie o DataFrame e adicione esquema ao DataFrame
df = spark_app.Createdataframe (my_array_data, esquema = esquema)
# Verifique o Student_full_name - K em todas as linhas usando Array_contains () Função.
df.Selecione ("student_full_name", Array_contains ('student_full_name', 'k'))).mostrar()

Saída:

Aqui, selecionamos as colunas do Student_full_Name. A primeira coluna é a coluna real e a segunda coluna é o resultado retornado pela função Array_contains ().

Somente o terceiro e a quarta fila têm valor 'k', por isso retorna verdadeiro, e o restante resulta para false.

Agora, se você deseja retornar a linha inteira no DataFrame, com base no valor especificado no método Array_contains (), poderá usar onde ou filtro () Cláusula em vez de selecionar cláusula.

Exemplo 1: Usando onde ()

Neste exemplo, retornaremos a linha em que a coluna Student_full_Name possui 'K' usando a função Array_Contains ().

#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 Array_Contains
#Crie um aplicativo chamado Linuxhint
Spark_App = SparkSession.construtor.AppName ('Linuxhint').getorcreate ()
# Considere uma matriz com 5 elementos
my_array_data = [(1, ['a']), (2, ['b', 'l', 'b']), (3, ['k', 'a', 'k']), ( 4, ['k']), (3, ['b', 'p']]]]
#Define o StructType e Structfields
#para os dados acima
esquema = structtype ([structfield ("student_category", integertype ()), structfield ("student_full_name", arraytype (stringtype ())))))
#Crie o DataFrame e adicione esquema ao DataFrame
df = spark_app.Createdataframe (my_array_data, esquema = esquema)
# Retorne o Student_full_name - K Usando a função Array_contains ().
df.onde (array_contains ('student_full_name', 'k')).mostrar()

Saída:

Você pode ver que as linhas foram devolvidas onde o Student_full_Name tem K Value.

Exemplo 2: Usando o filtro ()

Neste exemplo, retornaremos a linha em que a coluna Student_full_Name possui 'k' usando a função Array_contains () com filtro com filtro.

#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 Array_Contains
#Crie um aplicativo chamado Linuxhint
Spark_App = SparkSession.construtor.AppName ('Linuxhint').getorcreate ()
# Considere uma matriz com 5 elementos
my_array_data = [(1, ['a']), (2, ['b', 'l', 'b']), (3, ['k', 'a', 'k']), ( 4, ['k']), (3, ['b', 'p']]]]
#Define o StructType e Structfields
#para os dados acima
esquema = structtype ([structfield ("student_category", integertype ()), structfield ("student_full_name", arraytype (stringtype ())))))
#Crie o DataFrame e adicione esquema ao DataFrame
df = spark_app.Createdataframe (my_array_data, esquema = esquema)
# Retorne o Student_full_name - K Usando a função Array_contains ().
df.filtro (array_contains ('student_full_name', 'k'))).mostrar()

Saída:

Você pode ver que as linhas foram devolvidas onde o Student_full_Name tem K Value.

Conclusão

Chegamos a saber que Array_contains () é usado para verificar se o valor está presente em uma matriz de colunas. Isso pode ser alcançado usando a cláusula de seleção.

Se você precisar retornar linhas onde a matriz contém valores, em vez de selecionar, você pode usar onde ou cláusula filtro.