"En Python, Pyspark es un módulo Spark utilizado para proporcionar un tipo similar de procesamiento como Spark usando DataFrame.
Proporciona los métodos structtype () y structfield () que se utilizan para definir las columnas en el marco de datos de Pyspark.
Al usar estos métodos, podemos definir los nombres de la columna y los tipos de datos de las columnas particulares."
Discutamos uno por uno
Structtype ()
Este método se utiliza para definir la estructura del marco de datos de Pyspark. Aceptará una lista de tipos de datos junto con los nombres de columnas para el marco de datos dado. Esto se conoce como el esquema del DataFrame. Almacena una colección de campos
Structfield ()
Este método se utiliza dentro del método structtype () del Pyspark DataFrame. Aceptará nombres de columnas con el tipo de datos.
ArrayType ()
Este método se utiliza para definir la estructura de matriz del marco de datos de Pyspark. Aceptará una lista de tipos de datos. Almacena una colección de campos. Podemos colocar los tipos de datos dentro de ArrayType ().
Entonces, en este artículo, tenemos que crear un marco de datos con una matriz. Creemos un marco de datos con 2 columnas. La primera columna es Student_Category que se refiere al campo entero para almacenar la identificación del estudiante y la segunda columna - Student_full_Name se usa para almacenar valores de cadena en una matriz creada usando ArrayType ().
#Importa el módulo Pyspark
importar pyspark
#Import Sparksession para crear una sesión
de Pyspark.SQL Import Sparksession
#y importar tipos de estructura y otros tipos de datos
de Pyspark.sql.tipos import structtType, structfield, stringType, integertype, floattype, arraytype
de Pyspark.sql.Funciones importar array_contains
#cree una aplicación llamada Linuxhint
Spark_app = Sparksession.constructor.AppName ('Linuxhint').getorcreate ()
# Considere una matriz con 5 elementos
my_array_data = [(1, ['a']), (2, ['b', 'l', 'b']), (3, ['k', 'a', 'k']), (( 4, ['k']), (3, ['b', 'p'])]
#Define el structtype y structfields
#para los datos anteriores
schema = structType ([structfield ("student_category", integertype ()), structfield ("student_full_name", arrayType (stringType ())]))
#Cree el DataFrame y agregue esquema a DataFrame
DF = Spark_App.creatataframe (my_array_data, esquema = esquema)
df.espectáculo()
Producción:
array_position ()
array_position () se usa para devolver la posición del valor presente en una matriz en cada fila de la columna de tipo de matriz. Se necesitan dos parámetros, el primer parámetro es la columna de matriz, y el segundo parámetro es el valor. Devuelve la posición de valor en cada matriz. La posición comienza con 1.
Si hay múltiples valores en la misma matriz, entonces devolverá la posición del primer valor.
Sintaxis
array_position (array_column, "valor")
Parámetros
- array_column es la columna de matriz que tiene matrices con valores
- el valor está presente en la matriz.
la función array_position () se usa con el método select () para hacer la acción.
Devolver
Si el valor está presente en una matriz, devolverá la posición; De lo contrario, volverá 0.
Ejemplo 1
En este ejemplo, obtendremos la posición de valor: "k" de la columna student_full_name en el marcado de datos creado anteriormente.
#Importa el módulo Pyspark
importar pyspark
#Import Sparksession para crear una sesión
de Pyspark.SQL Import Sparksession
#y importar tipos de estructura y otros tipos de datos
de Pyspark.sql.tipos import structtType, structfield, stringType, integertype, floattype, arraytype
de Pyspark.sql.Importación de funciones *
#cree una aplicación llamada Linuxhint
Spark_app = Sparksession.constructor.AppName ('Linuxhint').getorcreate ()
# Considere una matriz con 5 elementos
my_array_data = [(1, ['a']), (2, ['b', 'l', 'b']), (3, ['k', 'a', 'k']), (( 4, ['k']), (3, ['b', 'p'])]
#Define el structtype y structfields
#para los datos anteriores
schema = structType ([structfield ("student_category", integertype ()), structfield ("student_full_name", arrayType (stringType ())]))
#Cree el DataFrame y agregue esquema a DataFrame
DF = Spark_App.creatataframe (my_array_data, esquema = esquema)
#return la posición de valor - k en cada fila de la columna de student_full_name
df.SELECT ("Student_full_Name", Array_Position ("Student_full_Name", 'k'))).espectáculo()
Producción
Puede ver en la segunda columna que se devuelven las posiciones de los valores en las matrices en todas las filas.
- En la primera fila, K no existe, por lo tanto, regresó 0
- En la segunda fila, K no existe, por lo tanto, regresó 0
- En la tercera fila, K existe en dos posiciones, primera y tercera: solo toma la primera posición, por lo que devuelve 0
- En la cuarta fila, K existe en la primera posición, por lo tanto, regresó 1
- En la quinta fila, K no existe, por lo tanto, regresó 0
Ejemplo 2
En este ejemplo, obtendremos la posición de valor: "A" de la columna Student_Full_Name en el marcado de datos creado anteriormente.
#Importa el módulo Pyspark
importar pyspark
#Import Sparksession para crear una sesión
de Pyspark.SQL Import Sparksession
#y importar tipos de estructura y otros tipos de datos
de Pyspark.sql.tipos import structtType, structfield, stringType, integertype, floattype, arraytype
de Pyspark.sql.Importación de funciones *
#cree una aplicación llamada Linuxhint
Spark_app = Sparksession.constructor.AppName ('Linuxhint').getorcreate ()
# Considere una matriz con 5 elementos
my_array_data = [(1, ['a']), (2, ['b', 'l', 'b']), (3, ['k', 'a', 'k']), (( 4, ['k']), (3, ['b', 'p'])]
#Define el structtype y structfields
#para los datos anteriores
schema = structType ([structfield ("student_category", integertype ()), structfield ("student_full_name", arrayType (stringType ())]))
#Cree el DataFrame y agregue esquema a DataFrame
DF = Spark_App.creatataframe (my_array_data, esquema = esquema)
#return la posición de valor: a en cada fila de la columna student_full_name
df.SELECT ("Student_full_Name", array_position ("student_full_name", 'a'))).espectáculo()
Producción
Puede ver en la segunda columna que se devuelven las posiciones de los valores en las matrices en todas las filas.
- En la primera fila, ex existe en la primera posición, por lo tanto, regresó 1
- En la segunda fila, a no existe, por lo tanto, regresó 0
- En la tercera fila, A existe en la segunda posición, por lo que devuelve 2
- En la cuarta fila, a no existe, por lo tanto, regresó 0
- En la quinta fila, a no existe, por lo tanto, devuelve 0.
array_repeat ()
array_repeat () se usa para repetir la matriz n veces. En otras palabras, duplicará la matriz y reemplazará n veces en todas las filas de la columna de tipo de matriz. Se necesitan dos parámetros. El primer parámetro es el nombre de la columna de tipo matriz, y el segundo parámetro toma repetir, que toma un valor entero que se refiere al número de veces para repetir la matriz.
Sintaxis
array_repeat (array_column, repetir)
Parámetros
- array_column es la columna de matriz que tiene matrices con valores
- repetir toma un valor entero para repetir la matriz en todas las filas
array_repeat () La función se usa con el método select () para hacer la acción.
Devolver
Si devuelve matrices repetidas en la matriz anidada.
Ejemplo 1
En este ejemplo, repetiremos la matriz 2 veces en todas las filas de la columna Student_Full_Name usando Array_Repeat () y mostraremos el DataFrame usando el método de recopilación.
#Importa el módulo Pyspark
importar pyspark
#Import Sparksession para crear una sesión
de Pyspark.SQL Import Sparksession
#y importar tipos de estructura y otros tipos de datos
de Pyspark.sql.tipos import structtType, structfield, stringType, integertype, floattype, arraytype
de Pyspark.sql.Importación de funciones *
#cree una aplicación llamada Linuxhint
Spark_app = Sparksession.constructor.AppName ('Linuxhint').getorcreate ()
# Considere una matriz con 5 elementos
my_array_data = [(1, ['a']), (2, ['b', 'l', 'b']), (3, ['k', 'a', 'k']), (( 4, ['k']), (3, ['b', 'p'])]
#Define el structtype y structfields
#para los datos anteriores
schema = structType ([structfield ("student_category", integertype ()), structfield ("student_full_name", arrayType (stringType ())]))
#Cree el DataFrame y agregue esquema a DataFrame
DF = Spark_App.creatataframe (my_array_data, esquema = esquema)
#Repeat la matriz 2 veces
df.SELECT ("Student_full_Name", array_repeat ("student_full_name", 2)).recolectar()
Producción
[Fila (student_full_name = ['a'], array_repeat (student_full_name, 2) = [['a'], ['a']]),
Fila (student_full_name = ['b', 'l', 'b'], array_repeat (student_full_name, 2) = [[b ',' l ',' b '], [' b ',' l ',', ' B']]),
Fila (student_full_name = ['k', 'a', 'k'], array_repeat (student_full_name, 2) = [[k ',' a ',' k '], [' k ',' a ',,', ' K ']]),
Fila (student_full_name = ['k'], array_repeat (student_full_name, 2) = [['k'], ['k']]),
Fila (student_full_name = ['b', 'p'], array_repeat (student_full_name, 2) = [[b ',' p '], [' b ',' p ']])]]
Podemos ver que la matriz se repite 2 veces en todas las filas de la columna Student_Full_Name en una matriz anidada,
Ejemplo 2
En este ejemplo, repetiremos la matriz 4 veces en todas las filas de la columna Student_Full_Name usando Array_Repeat () y mostraremos el DataFrame usando el método de recopilación.
#Importa el módulo Pyspark
importar pyspark
#Import Sparksession para crear una sesión
de Pyspark.SQL Import Sparksession
#y importar tipos de estructura y otros tipos de datos
de Pyspark.sql.tipos import structtType, structfield, stringType, integertype, floattype, arraytype
de Pyspark.sql.Importación de funciones *
#cree una aplicación llamada Linuxhint
Spark_app = Sparksession.constructor.AppName ('Linuxhint').getorcreate ()
# Considere una matriz con 5 elementos
my_array_data = [(1, ['a']), (2, ['b', 'l', 'b']), (3, ['k', 'a', 'k']), (( 4, ['k']), (3, ['b', 'p'])]
#Define el structtype y structfields
#para los datos anteriores
schema = structType ([structfield ("student_category", integertype ()), structfield ("student_full_name", arrayType (stringType ())]))
#Cree el DataFrame y agregue esquema a DataFrame
DF = Spark_App.creatataframe (my_array_data, esquema = esquema)
#Repeat la matriz 4 veces
df.SELECT ("Student_full_Name", array_repeat ("student_full_name", 4)).recolectar()
Producción
[Fila (student_full_name = ['a'], array_repeat (student_full_name, 4) = [['a'], ['a'], ['a'], ['a']])),
Fila (student_full_name = ['b', 'l', 'b'], array_repeat (student_full_name, 4) = ['b', 'l', 'b'], ['b', 'l', ',' B '], [' b ',' l ',' b '], [' b ',' l ',' b ']]),
Fila (student_full_name = ['k', 'a', 'k'], array_repeat (student_full_name, 4) = [[k ',' a ',' k '], [' k ',' a ',', ' K '], [' k ',' a ',' k '], [' k ',' a ',' k ']]),
Fila (student_full_name = ['k'], array_repeat (student_full_name, 4) = [['k'], ['k'], ['k'], ['k']])),
Fila (student_full_name = ['b', 'p'], array_repeat (student_full_name, 4) = [['b', 'p'], ['b', 'p'], ['b', 'p' ], ['B', 'p']]]]
Podemos ver que la matriz se repite 4 veces en todas las filas de la columna Student_Full_Name en una matriz anidada.
Conclusión
En este artículo de Pyspark, vimos dos funciones de matriz diferentes. array_position () se usa para devolver la posición del valor especificado en una matriz. Notamos que devolvería la primera posición si hubiera múltiples valores en una matriz. A continuación, discutimos el método array_repeat () que se utiliza para duplicar la matriz n veces en todas las filas. Las matrices repetidas se almacenan en una matriz anidada. Ambas funciones usan el método select () para hacer la funcionalidad.