signaturfunktionen af randomSplit () inkluderer en vægtliste og en frøspecifikation. Vægtlisten er at angive antallet af opdelinger og procent (omtrentlige) i hver og frøet er for Reproducerbarhed. Forholdet er omtrentligt på grund af arten af, hvordan det beregnes.
for eksempel ville følgende kode i figur 3 opdele df i to datarammer, train_df er 80% og test_df er 20% af den oprindelige dataramme. Ved at bruge den samme værdi for tilfældigt frø, Vi forventer, at de samme datapunkter er i samme split, hvis vi skulle køre scriptet igen eller gnisten genopbygger splittelserne internt.
under hætten
følgende proces gentages for at generere hver delt dataramme: partitionering, sortering inden for partitioner og Bernoulli-prøveudtagning. Hvis den oprindelige dataramme ikke cachelagres, hentes dataene igen, opdeles igen og sorteres igen for hver splitberegning. Dette er kilden til potentielle anomalier. Sammenfattende svarer randomSplit() til at udføre prøve () for hver opdeling med procentdelen til prøve, der ændres med opdelingen, der udføres. Dette er tydeligt, hvis du undersøger kildekoden for randomSplit() i PySpark3. Denne blog indeholder også nogle flere oplysninger og visuals om, hvordan randomSplit() implementeres.
lad os gå gennem et eksempel. Figur 4 er et diagram over prøven() for hver split, startende med 0,80 split.