No Python, Pyspark é um módulo Spark que fornece um tipo semelhante de processamento como o Spark usando o DataFrame. expr () em Pyspark refere -se a uma expressão SQL usada para extrair os dados executando algumas operações. expr () pode ser usado em muitos cenários.
Sintaxe real
EXPR (expressão SQL)
É preciso uma expressão SQL e executa algumas operações dentro da expressão.
Vamos discutir um por um. Antes disso, temos que criar um quadro de dados Pyspark para demonstração.”
Exemplo
Vamos criar um DataFrame com 5 linhas e 6 colunas e exibi -lo usando o método show ().
#import o módulo Pyspark
Importar Pyspark
#Import SparkSession para criar uma sessão
de Pyspark.SQL Import SparkSession
#Crie um aplicativo chamado Linuxhint
Spark_App = SparkSession.construtor.AppName ('Linuxhint').getorcreate ()
# Crie dados dos alunos com 5 linhas e 6 atributos
alunos = ['rollno': '001', 'nome': 'sravan', 'idade': 23, 'altura': 5.79, 'Peso': 67, 'Endereço': 'Guntur',
'rollno': '002', 'nome': 'ojaswi', 'idade': 16, 'altura': 3.79, 'Peso': 34, 'Endereço': 'Hyd',
'rollno': '003', 'nome': 'gnanesh chowdary', 'idade': 7, 'altura': 2.79, 'Peso': 17, 'Endereço': 'Patna',
'rollno': '004', 'nome': 'rohith', 'idade': 9, 'altura': 3.69, 'Peso': 28, 'Endereço': 'Hyd',
'rollno': '005', 'nome': 'sridevi', 'idade': 37, 'altura': 5.59, 'Peso': 54, 'Endereço': 'Hyd']
# Crie o DataFrame
df = spark_app.CreatedAtAframe (estudantes)
#display dataframe
df.mostrar()
Saída
Cenário 1: Concatenando uma ou mais colunas
Nesse cenário, concatizaremos uma ou mais colunas no Pyspark Dataframe usando expr ().
Ele usa o método withcolumn () para criar um novo nome de coluna para as colunas concatenato.
Sintaxe
quadro de dados.withcolumn ("column_name", expressão)
Parâmetros
São necessários dois parâmetros.
- Primeiro é o nome da coluna usado como o nome da coluna para as colunas concatenadas
- A expressão é criada usando expr () para concatenar colunas.
Aqui a expressão é:
EXPR ("Column1 || Separator || column2 || separador '||… || coluna n”)
Aqui, a coluna refere -se aos nomes de colunas para serem concatenados com um separador entre eles. Pode ser qualquer personagem, como personagens especiais.
Exemplo
Neste exemplo, estamos concatenando três colunas - Roll Nenhum nome e endereço separados por “ -“ e o nome da coluna para essas colunas concatenadas é - “Rollno com nome e endereço.”
#import o módulo Pyspark
Importar Pyspark
#Import SparkSession para criar uma sessão
de Pyspark.SQL Import SparkSession
#Crie um aplicativo chamado Linuxhint
Spark_App = SparkSession.construtor.AppName ('Linuxhint').getorcreate ()
# Crie dados dos alunos com 5 linhas e 6 atributos
alunos = ['rollno': '001', 'nome': 'sravan', 'idade': 23, 'altura': 5.79, 'Peso': 67, 'Endereço': 'Guntur',
'rollno': '002', 'nome': 'ojaswi', 'idade': 16, 'altura': 3.79, 'Peso': 34, 'Endereço': 'Hyd',
'rollno': '003', 'nome': 'gnanesh chowdary', 'idade': 7, 'altura': 2.79, 'Peso': 17, 'Endereço': 'Patna',
'rollno': '004', 'nome': 'rohith', 'idade': 9, 'altura': 3.69, 'Peso': 28, 'Endereço': 'Hyd',
'rollno': '005', 'nome': 'sridevi', 'idade': 37, 'altura': 5.59, 'Peso': 54, 'Endereço': 'Hyd']
# Crie o DataFrame
df = spark_app.CreatedAtAframe (estudantes)
#concate rollno, colunas de nome e endereço uaing expr ()
df.withcolumn ("rollno com nome e endereço", expr ("rollno || '-' || nome || '-' || endereço")))).mostrar()
Saída
Podemos ver que as colunas de rollno, nome e endereço são concatenadas com o “-“ separador.
Cenário 2: Adicione uma nova coluna baseada em condições
Aqui, usaremos expr () para especificar as condições dentro dele e, juntamente com o WithColumn (), para atribuir os valores das condições retornadas em uma nova coluna.
Podemos especificar as condições usando o caso quando
Estrutura
Caso quando
ENTÃO
Caso quando
ENTÃO
..
..
OUTRO
FIM
Dentro, quando temos que fornecer a condição e dentro, então temos que realizar uma ação.
Se a condição interna for verdadeira, o bloco será executado. Se falhar, vai para o bloco e terminar.
Esta declaração condicional é fornecida dentro de expr () como uma expressão SQL.
Sintaxe
quadro de dados.WithColumn ("Column", expr ("Caso quando condição1 então ação" +"quando condição2 então ação ... else Action end"))))
Onde,
- A coluna é a nova coluna criada e os valores são atribuídos com base nas condições nesta coluna
- expr () leva o caso quando a lógica condicional
Exemplo
Neste exemplo, estamos criando uma nova coluna - “altura atualizada” e atribuindo valores a ela com base nas seguintes condições aplicadas à coluna de altura.
Se a altura for maior que 5 - atribua 10 na coluna de altura atualizada sobre ela.
Se a altura for menor que 5 - atribua 5 na coluna de altura atualizada sobre ela.
Caso contrário, atualize a coluna de altura para 7 através das linhas.
#import o módulo Pyspark
Importar Pyspark
#Import SparkSession para criar uma sessão
de Pyspark.SQL Import SparkSession
#Crie um aplicativo chamado Linuxhint
Spark_App = SparkSession.construtor.AppName ('Linuxhint').getorcreate ()
# Crie dados dos alunos com 5 linhas e 6 atributos
alunos = ['rollno': '001', 'nome': 'sravan', 'idade': 23, 'altura': 5.79, 'Peso': 67, 'Endereço': 'Guntur',
'rollno': '002', 'nome': 'ojaswi', 'idade': 16, 'altura': 3.79, 'Peso': 34, 'Endereço': 'Hyd',
'rollno': '003', 'nome': 'gnanesh chowdary', 'idade': 7, 'altura': 2.79, 'Peso': 17, 'Endereço': 'Patna',
'rollno': '004', 'nome': 'rohith', 'idade': 9, 'altura': 3.69, 'Peso': 28, 'Endereço': 'Hyd',
'rollno': '005', 'nome': 'sridevi', 'idade': 37, 'altura': 5.59, 'Peso': 54, 'Endereço': 'Hyd']
# Crie o DataFrame
df = spark_app.CreatedAtAframe (estudantes)
#In coluna de altura
#Se a altura é maior que 5 - atribua 10 na coluna de altura atualizada sobre ela
#Se a altura é menor que 5 - atribua 5 na coluna de altura atualizada sobre ela
#Otherwise a coluna de altura atualizada como 7 nas linhas
df.WithColumn ("Altura atualizada", expr ("Caso quando altura> 5 então 10" +"quando a altura <5 THEN 5 ELSE 7 END")).show()
Saída
Podemos ver que os valores são alocados na coluna "altura atualizada" com base nas condições.
Cenário 3: Execute operações aritméticas
É possível executar operações aritméticas como adição, subtração, multiplicação e divisão com colunas existentes usando expr ().
Aqui expr () pode ser usado com uma cláusula selecionada para exibir as colunas atualizadas.
Sintaxe
quadro de dados.Selecione (expr ("Expression"))
A expressão é usada para executar operações aritméticas que podem ser:
“Valor da Arithmetic_Operator da coluna como new_column”
Aqui, a coluna é o nome da coluna no qual podemos executar operações aritméticas; O valor é o número adicionado a cada linha na coluna e new_column é o nome da coluna que armazena o resultado.
Exemplo
Neste exemplo, realizaremos duas operações aritméticas - adição e subtração na coluna AGE.
#import o módulo Pyspark
Importar Pyspark
#Import SparkSession para criar uma sessão
de Pyspark.SQL Import SparkSession
#Crie um aplicativo chamado Linuxhint
Spark_App = SparkSession.construtor.AppName ('Linuxhint').getorcreate ()
# Crie dados dos alunos com 5 linhas e 6 atributos
alunos = ['rollno': '001', 'nome': 'sravan', 'idade': 23, 'altura': 5.79, 'Peso': 67, 'Endereço': 'Guntur',
'rollno': '002', 'nome': 'ojaswi', 'idade': 16, 'altura': 3.79, 'Peso': 34, 'Endereço': 'Hyd',
'rollno': '003', 'nome': 'gnanesh chowdary', 'idade': 7, 'altura': 2.79, 'Peso': 17, 'Endereço': 'Patna',
'rollno': '004', 'nome': 'rohith', 'idade': 9, 'altura': 3.69, 'Peso': 28, 'Endereço': 'Hyd',
'rollno': '005', 'nome': 'sridevi', 'idade': 37, 'altura': 5.59, 'Peso': 54, 'Endereço': 'Hyd']
# Crie o DataFrame
df = spark_app.CreatedAtAframe (estudantes)
#Add 10 a envelhecer coluna
df.Selecione (df.idade, expr ("idade + 10 como idade_after_10")).mostrar()
#subtract 10 da coluna de idade
df.Selecione (df.idade, expr ("Idade - 10 como idade_before_10")).mostrar()
Saída
Na operação de adição, estamos adicionando 10 à coluna Age e armazenamos na coluna “Age_after_10”.
Na operação de subtração, subtraímos 10 da coluna AGE e a armazenamos na coluna “Age_Before_10”.
Conclusão
Neste tutorial de Pyspark, vimos como usar expr () em três cenários diferentes. Pode ser usado para expressões condicionais, pode ser usado para executar operações aritméticas e pode ser usado para concatenar várias colunas.