Função da janela de classificação Pyspark

Função da janela de classificação Pyspark
Especificar um número de classificação para cada linha de Pyspark é a melhor maneira de ser fácil encontrar as linhas em uma partição.

No Pyspark, é possível particionar as linhas no quadro de dados usando a função da janela. Está disponível no Pyspark.SQL.janela módulo.

A vantagem da partição é alcançar a consistência e agrupamento de dados. Depois de executar a partição, podemos definir as fileiras para as linhas em cada partição usando a função de classificação ().

É possível particionar as linhas em um quadro de dados com base nos valores em uma coluna específica. Então, todos os valores semelhantes são definidos para cada partição.

Função da janela de classificação ()

Classificação em Pyspark é uma função de janela que define as fileiras para as linhas em cada partição.

A classificação começa em 1 e, se algum valores forem iguais em duas ou mais linhas, a mesma classificação será atribuída. No entanto, para a próxima linha, a classificação será o seguinte número contando das linhas amarradas (linhas com a mesma classificação).

Aqui, os valores são da coluna onde especificamos a coluna dentro ordenar por(). Então, com base nos valores nesta coluna, classificação() verifica e atribui o número da classificação.

O principal é classificação() não está disponível diretamente. Temos que importá -lo do Pyspark.SQL.funções módulo.

Sintaxe para importar módulo

de Pyspark.SQL.funções Importar classificação

Caso contrário, também podemos fazer assim para importar todos os métodos deste módulo.

de Pyspark.SQL.Funções Importar *

Devemos seguir as etapas abaixo para executar a partição e aplicar a classificação em dados particionados.

Passos:

  1. Crie um Dados de Dados Pyspark com valores semelhantes em pelo menos uma coluna.
  2. Partição Os dados usando o método Partionby () disponíveis na função da janela e encomende -os com base na coluna usando a função orderby ().

Sintaxe:

partição = janela.Partionby ("coluna").ordem ("coluna")

Podemos solicitar os dados particionados com a coluna particionada ou qualquer outra coluna.
Agora, usando o sobre() função nas linhas particionadas, você pode usar o classificação() função. Então, adicionaremos uma coluna para armazenar o número da linha usando o withcolumn () função.
Sintaxe:

dataframe_obj.withcolumn ("nome", classificação ().sobre (partição))

Então, o nome especifica o nome da linha aqui, e DataFrame_OBJ é o nosso Pyspark Dataframe. Vamos implementar o código.

Exemplo 1: Rank Technology1 por sujeito_id

Aqui, criaremos um pyspark DataFrame que possui 5 colunas: ['sujeito_id', 'nome', 'idade', 'tecnologia1', 'tecnologia2'] com 10 linhas e particionar as linhas com base em Technology1 Usando a função da janela.

Finalmente, daremos fileiras às linhas em todas as partições, adicionando uma nova coluna chamada CLASSIFICAÇÃO.

Importar Pyspark
de Pyspark.Importação SQL *
Spark_App = SparkSession.construtor.nome do aplicativo('_').getorcreate ()
alunos = [(4, 'sravan', 23, 'php', 'testes'),
(4, 'sravan', 23, 'php', 'testing'),
(46, 'Mounika', 22, '.Net ',' html '),
(4, 'Deepika', 21, 'Oracle', 'html'),
(46, 'Mounika', 22, 'Oracle', 'Testing'),
(12, 'Chandrika', 22, 'Hadoop', 'C#'),
(12, 'Chandrika', 22, 'Oracle', 'Testing'),
(4, 'Sravan', 23, 'Oracle', 'C#'),
(4, 'Deepika', 21, 'Php', 'C#'),
(46, 'Mounika', 22, '.Net ',' teste ')
]
dataframe_obj = spark_app.CreatedataFrame (estudantes, ['sujeito_id', 'nome', 'idade', 'tecnologia1', 'tecnologia2']))
print ("---------- DataFrame real ----------")
dataframe_obj.mostrar()
# importe a função da janela
de Pyspark.SQL.Janela de importação de janela
#import a classificação do Pyspark.SQL.funções
de Pyspark.SQL.funções Importar classificação
#Partition O DataFrame com base nos valores na coluna Technology1 e
#orde as linhas em cada partição com base na coluna Subjetion_id
partição = janela.partitionby ("tecnologia1").ordem ('sujeito_id')
print ("---------- Particionado DataFrame ----------")
#Agora menciona a classificação de cada linha na coluna de classificação
dataframe_obj.WithColumn ("Rank", Rank ().sobre (partição)).mostrar()

Saída:

Explicação
A primeira saída representa os dados reais presentes no DataFrame. Na segunda saída, a partição é feita com base no Technology1 coluna.

Partições totais: 4

Partição 1:
.A rede ocorreu duas vezes na primeira partição. Os valores na coluna sujeito_id são os mesmos. Portanto, a função de classificação () retorna a mesma classificação para ambos .Valores líquidos.

Partição 2:
Hadoop ocorreu uma vez na segunda partição. Então, a classificação é 1.

Partição 3:

  • Oracle ocorreu quatro vezes na terceira partição.
  • Para os dois primeiros oráculos, os valores de sujeito são os mesmos. Então, para ambos, a classificação 1 é atribuída.
  • Para o terceiro oráculo, o rank é 3 (a classificação 2 não existirá, pois, para os dois oráculos acima, foram dadas duas fileiras).
  • Para o último Oracle, a classificação é 4.

Partição 4:
PHP ocorreu três vezes na quarta partição, e os valores na coluna Subject_id são os mesmos para todos. Portanto, a classificação é 1 para todos os php.

Exemplo 2: Rank Technology2 por sujeito_id

Aqui, particionaremos as linhas com base em Technology2 Usando a função da janela. Finalmente, daremos fileiras às linhas com base na coluna Subject_id em todas as partições, adicionando uma nova coluna chamada “CLASSIFICAÇÃO”.

(Se você não criou o Pyspark Dataframe, crie -o usando o primeiro exemplo.)

# importe a função da janela
de Pyspark.SQL.Janela de importação de janela
#import a classificação do Pyspark.SQL.funções
de Pyspark.SQL.funções Importar classificação
#Partition O DataFrame com base nos valores na coluna Technology2 e
#orde as linhas em cada partição com base na coluna Subjetion_id
partição = janela.Partionby ("Technology2").ordem ('sujeito_id')
print ("---------- Particionado DataFrame ----------")
#Agora menciona a classificação de cada linha na coluna de classificação
dataframe_obj.WithColumn ("Rank", Rank ().sobre (partição)).mostrar()

Saída:

Explicação
A saída representa os dados reais presentes no DataFrame.

Na segunda saída, a partição é feita com base no Technology2 coluna e ordenada com base na coluna Subjetion_id.

Partições totais: 3

Partição 1:
C# ocorreu três vezes na primeira partição. Os dois primeiros valores na coluna sujeito_id são os mesmos. Portanto, a função Rank () retorna a mesma classificação 1 para os dois primeiros C#e, para o terceiro C#, a classificação é 3.

Partição 2:
HTML ocorreu duas vezes na segunda partição, e os valores de sujeito são diferentes para esses dois. Portanto, a classificação 1 é atribuída para o primeiro HTML, e a classificação 2 é atribuída para o segundo.

Partição 3:

  • Os testes ocorreram cinco vezes na terceira partição.
  • Para os dois primeiros testes, os valores de sujeito são os mesmos. Então, para ambos, a classificação 1 é atribuída.
  • Para o terceiro teste, a classificação é 3 (a classificação 2 não existirá, pois, para os dois testes anteriores, foram fornecidas duas fileiras).
  • Para o último teste, a classificação foi de 4.

Exemplo 3: Rank Technology2 por idade

Aqui, particionaremos as linhas com base em Technology2 Usando a função da janela.

Finalmente, daremos fileiras às linhas com base na coluna AGE em todas as partições, adicionando uma nova coluna chamada “CLASSIFICAÇÃO”.

(Se você não criou o Pyspark Dataframe, crie -o usando o primeiro exemplo.)

# importe a função da janela
de Pyspark.SQL.Janela de importação de janela
#import a classificação do Pyspark.SQL.funções
de Pyspark.SQL.funções Importar classificação
#Partition O DataFrame com base nos valores na coluna Technology2 e
#Order as linhas em cada partição com base na coluna de idade
partição = janela.Partionby ("Technology2").ordem ('idade')
print ("---------- Particionado DataFrame ----------")
#Agora menciona a classificação de cada linha na coluna de classificação
dataframe_obj.WithColumn ("Rank", Rank ().sobre (partição)).mostrar()

Saída:

Explicação
A saída representa os dados reais presentes no DataFrame. Na segunda saída, a partição é feita com base no Technology2 coluna e ordenada com base na coluna de idade.

Partições totais: 3

Partição 1:
C# ocorreu três vezes na primeira partição. E todos os valores na coluna de idade são diferentes. Portanto, a função de classificação () retorna os ranks 1, 2 e 3 para três valores de C#.

Partição 2:
HTML ocorreu duas vezes na primeira partição. Todos os valores na coluna de idade são diferentes. Portanto, a função de classificação () retorna os ranks 1 e 2 para dois valores HTML.

Partição 3:

  • Os testes ocorreram cinco vezes na terceira partição.
  • Para os três primeiros testes, os valores da idade são os mesmos. Então, para três, a classificação 1 é atribuída.
  • Para o quarto e o quinto testes, os valores da idade são os mesmos. Então, para dois, a classificação 4 é atribuída.

Conclusão

Discutimos particionando as linhas no quadro de dados Pyspark e definindo a classificação em cada partição usando a função de janela de classificação (). Classificação em Pyspark é uma função de janela que define as fileiras para as linhas em cada partição. Certifique -se de usar este comando enquanto usa esta função de Pyspark.SQL.funções Importar classificação.