Pyspark TakeOrdered e TakeSample

Pyspark TakeOrdered e TakeSample
RDD significa conjuntos de dados distribuídos resilientes. Podemos chamar RDD como uma estrutura de dados fundamental no Apache Spark.

Precisamos importar RDD do Pyspark.Módulo RDD.

Em Pyspark para criar um RDD, podemos usar o método parallelize ().

Sintaxe:

Spark_App.SparkContext.paralelize (dados)

Onde os dados podem ser um dados unidimensionais (dados lineares) ou bidimensionais (dados da coluna de linha).

Neste artigo do Pyspark, discutiremos sobre as funções TakeOrdered () e TakeSample ().

Pyspark TakeOrdered ()

A função Pyspark TakeOrdered () é usada para devolver um novo RDD em um pedido do RDD existente.

São necessários dois parâmetros.

Sintaxe:

TakeOrdered (n, chave)

Parâmetros:

  1. n é usado para retornar o número de elementos em uma ordem no novo RDD.
  2. Key é um parâmetro opcional que leva uma função anônima para obter os elementos em ordem crescente ou ordem decrescente.

Para ordem crescente, a função pode ser - key = lambda elemento: elemento

Para ordem descendente, a função pode ser - Key = Lambda Element: -Element

É preciso sinal de menos (-) para levar elementos em ordem decrescente.

Se não for especificado, os elementos no novo RDD estarão em ordem crescente.

Exemplo 1:

Neste exemplo, estamos criando um RDD com 20 elementos e aplicando a função TakeOrdered () para obter os 10 primeiros elementos. Primeiros 12 elementos separadamente em ordem crescente usando o parâmetro -chave.

#import o módulo Pyspark
Importar Pyspark
#Import SparkSession para criar uma sessão
de Pyspark.SQL Import SparkSession
# importar rdd do Pyspark.rdd
de Pyspark.RDD Import rdd
#Crie um aplicativo chamado Linuxhint
Spark_App = SparkSession.construtor.AppName ('Linuxhint').getorcreate ()
# Crie o aluno marca dados com 20 elementos
Student_Marks = Spark_App.SparkContext.paralelize ([89,76,78,89,90,100,34,56,54,22,45,43,23,56,78,21,34,34,56,34]))
#Display Data em RDD
print ("Dados reais em RDD:", Student_marks.mapa (elemento lambda: elemento).colet ()))
#Get 10 elementos do RDD em ordem crescente
print ("10 elementos do RDD em uma ordem ascendente com a chave como parâmetro:", Student_marks.TakeOrdered (10, chave = elemento lambda: elemento)))
#Get 12 elementos do RDD em uma ordem ascendente
print ("12 elementos do RDD em uma ordem ascendente com a chave como parâmetro:", Student_marks.TakeOrdered (12, chave = elemento lambda: elemento)))

Saída:

Dados reais em RDD: [89, 76, 78, 89, 90, 100, 34, 56, 54, 22, 45, 43, 23, 56, 78, 21, 34, 34, 56, 34]
10 elementos de RDD em uma ordem ascendente com chave como parâmetro: [21, 22, 23, 34, 34, 34, 34, 43, 45, 54]
12 elementos de RDD em uma ordem ascendente com chave como parâmetro: [21, 22, 23, 34, 34, 34, 34, 43, 45, 54, 56, 56]

Você pode ver que novos RDDs são devolvidos com elementos em ordem crescente.

Exemplo 2:

Neste exemplo, estamos criando um RDD com 20 elementos e aplicando a função TakeOrdered () para obter os 10 primeiros elementos. Os 12 primeiros elementos são separados em ordem ascendente sem parâmetro -chave.

#import o módulo Pyspark
Importar Pyspark
#Import SparkSession para criar uma sessão
de Pyspark.SQL Import SparkSession
# importar rdd do Pyspark.rdd
de Pyspark.RDD Import rdd
#Crie um aplicativo chamado Linuxhint
Spark_App = SparkSession.construtor.AppName ('Linuxhint').getorcreate ()
# Crie o aluno marca dados com 20 elementos
Student_Marks = Spark_App.SparkContext.paralelize ([89,76,78,89,90,100,34,56,54,22,45,43,23,56,78,21,34,34,56,34]))
#Display Data em RDD
print ("Dados reais em RDD:", Student_marks.mapa (elemento lambda: elemento).colet ()))
#Get 10 elementos do RDD em ordem crescente
print ("10 elementos do RDD em uma ordem ascendente:", Student_marks.TakeOrdered (10))
#Get 12 elementos do RDD em uma ordem ascendente
print ("12 elementos do RDD em uma ordem ascendente:", Student_marks.TakeOrdered (12))

Saída:

Dados reais em RDD: [89, 76, 78, 89, 90, 100, 34, 56, 54, 22, 45, 43, 23, 56, 78, 21, 34, 34, 56, 34]
10 elementos de RDD em uma ordem ascendente: [21, 22, 23, 34, 34, 34, 34, 43, 45, 54]
12 elementos de RDD em uma ordem ascendente: [21, 22, 23, 34, 34, 34, 34, 43, 45, 54, 56, 56]

Você pode ver que novos RDDs são devolvidos com elementos em ordem ascendente ainda sem parâmetro -chave.

Exemplo 3:

Neste exemplo, estamos criando um RDD com 20 elementos e aplicando a função TakeOrdered () para obter o primeiro elemento 10. Os 12 primeiros elementos são separados em ordem decrescente.

#import o módulo Pyspark
Importar Pyspark
#Import SparkSession para criar uma sessão
de Pyspark.SQL Import SparkSession
# importar rdd do Pyspark.rdd
de Pyspark.RDD Import rdd
#Crie um aplicativo chamado Linuxhint
Spark_App = SparkSession.construtor.AppName ('Linuxhint').getorcreate ()
# Crie o aluno marca dados com 20 elementos
Student_Marks = Spark_App.SparkContext.paralelize ([89,76,78,89,90,100,34,56,54,22,45,43,23,56,78,21,34,34,56,34]))
#Display Data em RDD
print ("Dados reais em RDD:", Student_marks.mapa (elemento lambda: elemento).colet ()))
#Get 10 elementos do RDD em ordem decrescente
print ("10 elementos do RDD em uma ordem decrescente:", Student_marks.TakeOrdered (10, chave = elemento lambda: -Element))
#Get 12 elementos do RDD em ordem decrescente
print ("12 elementos do RDD em uma ordem decrescente:", Student_marks.TakeOrdered (12, chave = elemento lambda: -Element))

Saída:

Dados reais em RDD: [89, 76, 78, 89, 90, 100, 34, 56, 54, 22, 45, 43, 23, 56, 78, 21, 34, 34, 56, 34]
10 elementos de RDD em uma ordem decrescente: [100, 90, 89, 89, 78, 78, 76, 56, 56, 56]
12 elementos de RDD em uma ordem decrescente: [100, 90, 89, 89, 78, 78, 76, 56, 56, 56, 54, 45]

Você pode ver que novos RDDs são devolvidos com elementos em ordem decrescente. Para este caso, você deve especificar o parâmetro -chave.

Pyspark TakeSample ()

A função Pyspark TakeSample () é usada para retornar um novo RDD com valores aleatórios de um RDD existente. São necessários dois parâmetros.

Sintaxe:

Takesample (substitua, n)

Parâmetros:

  1. substituir os valores booleanos. Se estiver definido como true, os valores aleatórios que estão retornando a um novo RDD são únicos (eles não são repetidos/substituídos novamente). Se estiver definido como falso, os valores aleatórios que estão retornando a um novo RDD podem ser repetidos (eles podem ser repetidos/substituídos novamente)
  2. n é usado para retornar o número de elementos aleatórios em um novo RDD.

Exemplo 1:

Neste exemplo, criaremos um RDD com 20 elementos e retornaremos 10 elementos. 12 elementos são separados sem substituição.

#import o módulo Pyspark
Importar Pyspark
#Import SparkSession para criar uma sessão
de Pyspark.SQL Import SparkSession
# importar rdd do Pyspark.rdd
de Pyspark.RDD Import rdd
#Crie um aplicativo chamado Linuxhint
Spark_App = SparkSession.construtor.AppName ('Linuxhint').getorcreate ()
# Crie o aluno marca dados com 20 elementos
Student_Marks = Spark_App.SparkContext.paralelize ([89,76,78,89,90,100,34,56,54,22,45,43,23,56,78,21,34,34,56,34]))
#Display Data em RDD
print ("Dados reais em RDD:", Student_marks.mapa (elemento lambda: elemento).colet ()))
#get 10 elementos do RDD sem substituição
print ("10 elementos do RDD sem substituição:", Student_marks.Takesample (falso, 10))
#get 12 elementos do RDD sem substituição
print ("12 elementos do RDD sem substituição:", Student_marks.Takesample (falso, 12))

Saída:

Dados reais em RDD: [89, 76, 78, 89, 90, 100, 34, 56, 54, 22, 45, 43, 23, 56, 78, 21, 34, 34, 56, 34]
10 elementos do RDD sem substituição: [89, 23, 78, 56, 43, 100, 89, 78, 76, 21]
12 elementos do RDD sem substituição: [89, 23, 43, 54, 34, 45, 78, 56, 22, 56, 34, 34]

Podemos observar que valores aleatórios não são substituídos no novo RDD.

Exemplo 2:

Neste exemplo, criaremos um RDD com 20 elementos e retornaremos 10 elementos. 12 elementos são separados com substituição.

#import o módulo Pyspark
Importar Pyspark
#Import SparkSession para criar uma sessão
de Pyspark.SQL Import SparkSession
# importar rdd do Pyspark.rdd
de Pyspark.RDD Import rdd
#Crie um aplicativo chamado Linuxhint
Spark_App = SparkSession.construtor.AppName ('Linuxhint').getorcreate ()
# Crie o aluno marca dados com 20 elementos
Student_Marks = Spark_App.SparkContext.paralelize ([89,76,78,89,90,100,34,56,54,22,45,43,23,56,78,21,34,34,56,34]))
#Display Data em RDD
print ("Dados reais em RDD:", Student_marks.mapa (elemento lambda: elemento).colet ()))
#get 10 elementos do RDD com substituição
print ("10 elementos do RDD com substituição:", Student_marks.Takesample (verdadeiro, 10))
#get 12 elementos do RDD com substituição
print ("12 elementos do RDD com substituição:", Student_marks.Takesample (verdadeiro, 12))

Saída:

Dados reais em RDD: [89, 76, 78, 89, 90, 100, 34, 56, 54, 22, 45, 43, 23, 56, 78, 21, 34, 34, 56, 34]
10 elementos do RDD com substituição: [90, 34, 78, 34, 34, 89, 23, 22, 76, 21]
12 elementos do RDD com substituição: [43, 78, 78, 78, 78, 89, 21, 100, 89, 78, 34, 22]

Podemos observar que os valores aleatórios são substituídos nos dois novos RDDs, pois definimos o parâmetro como true.

Conclusão

Neste tutorial de Pyspark, vimos como usar as funções de TakeOrdered () & TakeSample () em RDD. Ambos são usados ​​para devolver o novo RDD do RDD existente.

TakeOrdered () retorna o novo RDD de um RDD existente com elementos em uma ordem de classificação. É possível obter os dados classificados em ordem decrescente usando o parâmetro -chave através da função Lambda.

Taksample () retorna o novo RDD de um RDD existente com alguns elementos aleatoriamente. É possível repetir os valores gerados aleatoriamente no novo RDD novamente usando o parâmetro de substituição.