Pyspark - StructType & structfield

Pyspark - StructType & structfield
I Python er Pyspark en Spark -modul som brukes til å gi en lignende type prosessering som Spark ved hjelp av DataFrame.

Det gir StructType () og structfield () -metodene som brukes til å definere kolonnene i Pyspark DataFrame.

Ved hjelp av disse metodene kan vi definere kolonnenavnene og datatypene til de bestemte kolonnene.

La oss diskutere en etter en

Struktureltype ()

Denne metoden brukes til å definere strukturen til Pyspark DataFrame. Den vil godta en liste over datatyper sammen med kolonnenavn for den gitte DataFrame. Dette er kjent som skjemaet for Dataframe. Den lagrer en samling felt

Structfield ()

Denne metoden brukes inne i strukturen () metoden for Pyspark DataFrame. Den aksepterer kolonnenavn med datatypen.

Syntaks:

skjema = struktureltype ([
Structfield ("kolonne 1", datatype, true/usann),
Structfield ("kolonne 2", datatype, true/usann),
.. ,
Structfield ("kolonne n", datatype, true/usann)))

Der skjema refererer til dataaframe når det opprettes

Parametere:

1. StructType godtar en liste over structfields i en liste atskilt med komma

2. StructField () brukes til å legge til kolonner til DataFrame, som tar kolonnenavn som den første parameteren og datatypen til de bestemte kolonnene som den andre parameteren.

Vi må bruke datatypene fra metodene som importeres fra Pyspark.SQL.typer modul.

Datatypene som støttes er:

  • StringType () - Brukes til å lagre strengverdier
  • Integertype () - Brukes til å lagre heltall eller lange heltallverdier
  • FloattType () - Brukes til å lagre floatverdier
  • Dubletype () - Brukes til å lagre doble verdier

3. Boolske verdier som den tredje parameteren; Hvis det er sant, vil den gitte datatypen bli brukt; Ellers ikke når det er usant.

Vi må overføre dette skjemaet til DataFrame -metoden sammen med data.

Syntaks:

CreateTataFrame (data, skjema = skjema)

Eksempel 1:

I dette eksemplet opprettet vi data i listen som inneholder 5 rader og 6 kolonner, og vi tilordner kolonnernavn som Rollno med String Data -typen, et navn med strengdatatypen, alder med heltallstype, høyde med en flottørtype , vekt med heltall og adresse med strengdatatypen.

Til slutt skal vi vise DataFrame ved hjelp av Show () -metoden.

#import pyspaprk -modulen
Importer pyspark
#import SparkSession for å lage en økt
Fra Pyspark.SQL Import SparkSession
#og importerer strukturtyper og datatyper
Fra Pyspark.SQL.typer importerer struktur, strukturfelt, strengtype, integertype, floattype
#Create en app som heter Linuxhint
Spark_app = SparkSession.bygger.AppName ('Linuxhint').getorCreate ()
# Lag studentdata med 5 rader og 6 attributter
Studenter = [['001', 'Sravan', 23,5.79,67, 'Guntur'],
['002', 'Ojaswi', 16,3.79,34, 'hyd'],
['003', 'Gnanesh Chowdary', 7,2.79,17, 'Patna'],
['004', 'Rohith', 9,3.69,28, 'hyd'],
['005', 'Sridevi', 37,5.59,54, 'hyd']]
#definer strukturen og strukturfeltene
#for kolonnenavn nedenfor
skjema = struktureltype ([
Structfield ("Rollno", StringType (), True),
Structfield ("Navn", StringType (), True),
Structfield ("Alder", Integertype (), True),
Structfield ("høyde", floattype (), true),
Structfield ("Vekt", Integertype (), True),
Structfield ("adresse", strengtype (), true)
])
#skape dataaframe og legge til skjemaet til dataaframe
df = spark_app.CreateTataFrame (studenter, skjema = skjema)
#Display DataFrame
df.forestilling()

Produksjon:

Hvis vi vil vise DataFrame -skjemaet, må vi bruke skjemametoden.

Dette vil returnere DataFrame -typen sammen med kolonner

Syntaks:

Dataramme. skjema

Hvis vi vil vise felt, må vi bruke felt med skjema

Syntaks:

Dataramme. skjema.Enger

Eksempel 2

I dette eksemplet skal vi vise skjemaet for DataFrame

#import pyspaprk -modulen
Importer pyspark
#import SparkSession for å lage en økt
Fra Pyspark.SQL Import SparkSession
#og importerer strukturtyper og datatyper
Fra Pyspark.SQL.typer importerer struktur, strukturfelt, strengtype, integertype, floattype
#Create en app som heter Linuxhint
Spark_app = SparkSession.bygger.AppName ('Linuxhint').getorCreate ()
# Lag studentdata med 5 rader og 6 attributter
Studenter = [['001', 'Sravan', 23,5.79,67, 'Guntur'],
['002', 'Ojaswi', 16,3.79,34, 'hyd'],
['003', 'Gnanesh Chowdary', 7,2.79,17, 'Patna'],
['004', 'Rohith', 9,3.69,28, 'hyd'],
['005', 'Sridevi', 37,5.59,54, 'hyd']]
#definer strukturen og strukturfeltene
#for kolonnenavn nedenfor
skjema = struktureltype ([
Structfield ("Rollno", StringType (), True),
Structfield ("Navn", StringType (), True),
Structfield ("Alder", Integertype (), True),
Structfield ("høyde", floattype (), true),
Structfield ("Vekt", Integertype (), True),
Structfield ("adresse", strengtype (), true)
])
#skape dataaframe og legge til skjemaet til dataaframe
df = spark_app.CreateTataFrame (studenter, skjema = skjema)
# Vis skjemaet
trykk (df.skjema)

Produksjon:

[Structfield (rollno, strengtype, true), structfield (navn, strengtype, true), structfield (alder, integertype, true), structfield (høyde, floattype, true), structfield (vekt, integertype, true), structfield (adresse, StringType, True)]]

Eksempel 3

I dette eksemplet skal vi vise skjemafeltene til Dataframe ved hjelp av skjema.Enger

#import pyspaprk -modulen
Importer pyspark
#import SparkSession for å lage en økt
Fra Pyspark.SQL Import SparkSession
#og importerer strukturtyper og datatyper
Fra Pyspark.SQL.typer importerer struktur, strukturfelt, strengtype, integertype, floattype
#Create en app som heter Linuxhint
Spark_app = SparkSession.bygger.AppName ('Linuxhint').getorCreate ()
# Lag studentdata med 5 rader og 6 attributter
Studenter = [['001', 'Sravan', 23,5.79,67, 'Guntur'],
['002', 'Ojaswi', 16,3.79,34, 'hyd'],
['003', 'Gnanesh Chowdary', 7,2.79,17, 'Patna'],
['004', 'Rohith', 9,3.69,28, 'hyd'],
['005', 'Sridevi', 37,5.59,54, 'hyd']]
#definer strukturen og strukturfeltene
#for kolonnenavn nedenfor
skjema = struktureltype ([
Structfield ("Rollno", StringType (), True),
Structfield ("Navn", StringType (), True),
Structfield ("Alder", Integertype (), True),
Structfield ("høyde", floattype (), true),
Structfield ("Vekt", Integertype (), True),
Structfield ("adresse", strengtype (), true)
])
#skape dataaframe og legge til skjemaet til dataaframe
df = spark_app.CreateTataFrame (studenter, skjema = skjema)
# Vis skjemafeltene
trykk (df.skjema.Enger)

Produksjon:

[Structfield (rollno, strengtype, true), structfield (navn, strengtype, true), structfield (alder, integertype, true), structfield (høyde, floattype, true), structfield (vekt, integertype, true), structfield (adresse, StringType, True)]]

Vi kan også bruke Printschema () -metoden for å vise skjemaet i treformat

Syntaks:

Dataramme.Printschema ()

Eksempel 4:

Vis skjemaet i treformat med Printschema () -metode

#import pyspaprk -modulen
Importer pyspark
#import SparkSession for å lage en økt
Fra Pyspark.SQL Import SparkSession
#og importerer strukturtyper og datatyper
Fra Pyspark.SQL.typer importerer struktur, strukturfelt, strengtype, integertype, floattype
#Create en app som heter Linuxhint
Spark_app = SparkSession.bygger.AppName ('Linuxhint').getorCreate ()
# Lag studentdata med 5 rader og 6 attributter
Studenter = [['001', 'Sravan', 23,5.79,67, 'Guntur'],
['002', 'Ojaswi', 16,3.79,34, 'hyd'],
['003', 'Gnanesh Chowdary', 7,2.79,17, 'Patna'],
['004', 'Rohith', 9,3.69,28, 'hyd'],
['005', 'Sridevi', 37,5.59,54, 'hyd']]
#definer strukturen og strukturfeltene
#for kolonnenavn nedenfor
skjema = struktureltype ([
Structfield ("Rollno", StringType (), True),
Structfield ("Navn", StringType (), True),
Structfield ("Alder", Integertype (), True),
Structfield ("høyde", floattype (), true),
Structfield ("Vekt", Integertype (), True),
Structfield ("adresse", strengtype (), true)
])
#skape dataaframe og legge til skjemaet til dataaframe
df = spark_app.CreateTataFrame (studenter, skjema = skjema)
# Vis skjemaet i treformat
df.Printschema ()

Produksjon: