Pyspark Zip, Zipwithindex e ZipwithuniqueID

Pyspark Zip, Zipwithindex e ZipwithuniqueID
Neste artigo, apresentaremos e demonstraremos os métodos zip (), zipwithindex () e zipwithuniqueid ().

Antes de começarmos com esses métodos, precisamos importar RDD do Pyspark.Módulo RDD. RDD significa conjuntos de dados distribuídos resilientes. Podemos chamar RDD como uma estrutura de dados fundamental no Apache Spark. Assim, no 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 o ZIP (), ZipWithIndex () e ZipWithuniqueID ().

Pyspark Zip ()

A função Pyspark Zip () é usada para combinar valores em ambos os RDDs como pares retornando um novo RDD.

Sintaxe:

RDD Data1.zip (rdd_data2)

Aqui:

  1. Rdd_data1 é o primeiro RDD
  2. Rdd_data2 é o segundo RDD

Observação que o número total de elementos nos RDDs deve ser o mesmo. Caso contrário, ele retornará um erro.

Exemplo 1:

Neste exemplo, retornaremos o RDD zipleado de Student_Marks1 e Student_Marks2 Numeric Rdds.

#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 5 elementos
Student_Marks1 = Spark_App.SparkContext.paralelize ([89,76,78,89,90])
# Crie o aluno marca dados com 5 elementos
Student_Marks2 = Spark_App.SparkContext.paralelize ([1,2,3,4,5])
#Display Data em RDD
Print ("Dados reais em Student_Marks1:", Student_marks1.mapa (elemento lambda: elemento).colet ()))
Print ("Dados reais em Student_marks2:", Student_marks2.mapa (elemento lambda: elemento).colet ()))
#zip os dois RDD's usando zip ()
Imprimir (Student_Marks1.ZIP (Student_Marks2).colet ()))

Saída:

Dados reais em Student_marks1: [89, 76, 78, 89, 90]
Dados reais em Student_marks2: ['1', 2, 3, 4, 5]
[(89, '1'), (76, 2), (78, 3), (89, 4), (90, 5)]

Podemos ver que cada valor no primeiro RDD é combinado com o segundo RDD.

Exemplo 2:

Neste exemplo, retornaremos RDD ziple.

#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 dados de titulares dos alunos com 2 elementos
Assuntos1 = Spark_App.SparkContext.paralelize (['python', 'java']))
# Crie dados de titulares dos alunos com 2 elementos
Assuntos2 = Spark_App.SparkContext.paralelize (['html', 'java'])
#Display Data em RDD
print ("Dados reais em assuntos1:", sujeitos1.mapa (elemento lambda: elemento).colet ()))
print ("Dados reais nos sujeitos2:", sujeitos2.mapa (elemento lambda: elemento).colet ()))
#zip os dois RDD's usando zip ()
Imprimir (assuntos1.ZIP (sujeitos2).colet ()))
Saída:
Dados reais nos sujeitos1: ['python', 'java']
Dados reais nos sujeitos2: ['html', 'java']
[('Python', 'html'), ('java', 'java')]

Podemos ver que os valores de ambos os RDDs são fechados.

Pyspark ZipWithIndex ()

A função Pyspark ZipWithIndex () é usada para combinar valores em um único RDD com valores. Aqui, valores por padrão começam com 0.

Sintaxe:

Rdd_data.zipwithIndex ()

Aqui, rdd_data é o RDD

Exemplo 1:

Neste exemplo, criamos um RDD com 2 elementos de sequência e zip com valores usando zipwithindex ().

#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 dados de titulares dos alunos com 2 elementos
Assuntos1 = Spark_App.SparkContext.paralelize (['python', 'java']))
#Display Data em RDD
print ("Dados reais em assuntos1:", sujeitos1.mapa (elemento lambda: elemento).colet ()))
#zip os dois RDD's usando zipwithIndex ()
Imprimir (assuntos1.zipwithIndex ().colet ()))

Saída:

Dados reais nos sujeitos1: ['python', 'java']
[('Python', 0), ('Java', 1)]

Podemos ver que o valor python está rasgado com o valor 0 e o java é fechado com o valor 1.

Exemplo 2:

Neste exemplo, criamos um RDD com 6 elementos de string e zip com valores usando zipwithindex ().

#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 dados de titulares dos alunos com 6 elementos
Assuntos1 = Spark_App.SparkContext.paralelize (['python', 'java', 'python', 'java', 'python', 'java']))
#Display Data em RDD
print ("Dados reais em assuntos1:", sujeitos1.mapa (elemento lambda: elemento).colet ()))
#zip os dois RDD's usando zipwithIndex ()
Imprimir (assuntos1.zipwithIndex ().colet ()))

Saída:

Dados reais nos sujeitos1: ['python', 'java', 'python', 'java', 'python', 'java']
[('Python', 0), ('Java', 1), ('Python', 2), ('Java', 3), ('Python', 4), ('Java', 5)]

Pyspark zipwithuniqueid ()

A função Pyspark ZipWithuniqueID () é semelhante ao método acima, mas os valores que formam um par estão no seguinte padrão:

k, 1*n+k, 2*n+k, 3*n+k… .

n representa o número de partições.

Sintaxe:

Rdd_data.zipwithuniqueid ()

Aqui, rdd_data é o RDD

Pode haver muitas lacunas entre os valores fechados.

Exemplo:

#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 dados de titulares dos alunos com 6 elementos
Assuntos1 = Spark_App.SparkContext.paralelize (['python', 'java', 'python', 'java', 'python', 'java']))
#Display Data em RDD
print ("Dados reais em assuntos1:", sujeitos1.mapa (elemento lambda: elemento).colet ()))
#zip os dois RDD's usando zipwithuniqueid ()
Imprimir (assuntos1.zipwithuniqueid ().colet ()))

Saída:

Dados reais nos sujeitos1: ['python', 'java', 'python', 'java', 'python', 'java']
[('Python', 0), ('Java', 2), ('Python', 4), ('Java', 1), ('Python', 3), ('Java', 5)]

Na saída acima, podemos ver que diferentes valores são fechados com valores reais.

Conclusão

Neste tutorial, vimos como fechar o RDD com alguns valores. zip () é usado para fechar dois pares de RDD. ZipWithIndex () é usado para zip com valores e zipwithuniqueId () é usado para zípeiro com valores com base em partições.