Hold dig opdateret med nyeste teknologi tendenser
Deltag DataFlair på Telegram!!

mål

som vi ved, bruger Apache Spark delte variabler til parallel behandling. Nå, delte variabler er af to typer, Broadcast & akkumulator. Så i denne PySpark-artikel,” PySpark Broadcast and Accumulator ” lærer vi hele begrebet Broadcast & akkumulator ved hjælp af PySpark.
så lad os starte PySpark-udsendelsen og akkumulatoren.

PySpark Broadcast and Accumulator med eksempler

PySpark Broadcast and Accumulator med eksempler

lad os udforske PySpark Books

PySpark Broadcast and Accumulator

om definition af parallel behandling, når føreren sender en opgave til eksekutoren på klyngen, en kopi af den delte variabel går på hver knude i klyngen, så vi kan bruge den til at udføre opgaver.
delte variabler understøttet af Apache Spark i PySpark er to typer af−

  • Broadcast
  • akkumulator

lad os lære PySpark – udsendelse og akkumulator i detaljer:

Broadcastvariabler-PySpark

grundlæggende bruges Udsendelsesvariabler til at gemme kopien af data på tværs af alle noder. På alle maskiner er denne variabel imidlertid cachelagret, ikke sendt på maskiner. Vi kan også bruge den til at udsende nogle oplysninger til alle eksekutorer. Selvom det kan være af enhver type, enten foreløbig type eller et hashkort. For eksempel

ved du om PySpark Sparkkontekst

  • enkelt værdi

enkelt værdi refererer til den fælles værdi for alle produkterne.

  • Hashmap

mens Hashmap betyder, Slå op eller kort side deltage.
desuden kan udsendelsesdimensionen have en betydelig præstationsforbedring, når meget stort datasæt (fakta) forsøges at slutte sig til mindre datasæt (dimension). Derudover er disse variabler uforanderlige.
for PySpark har følgende kodeblok detaljerne i en Udsendelsesklasse:

class pyspark.Broadcast ( sc = None, value = None, pickle_registry = None, path = None)

for at bruge en Udsendelsesvariabel er her et eksempel, der viser en Udsendelsesvariabel, den har en attribut kaldet værdi, denne attribut gemmer dataene, og derefter bruges den til at returnere en udsendt værdi, såsom:

lad os revidere PySpark RDD

----------------------------------------broadcast.py--------------------------------------from pyspark import SparkContextsc = SparkContext("local", "Broadcast app")words_new = sc.broadcast()data = words_new.valueprint "Stored data -> %s" % (data)elem = words_new.valueprint "Printing a particular element in RDD -> %s" % (elem)----------------------------------------broadcast.py--------------------------------------

kommando

$SPARK_HOME/bin/spark-submit broadcast.py

Output
lagrede data ->
udskrivning af et bestemt element i RDD -> hadoop

Tag et kig på PySpark karriere omfang

akkumulatorer – pyspark

til aggregering af informationen gennem associative og kommutative operationer anvendes akkumulatorvariabler. Som et eksempel, for en sum operation eller tællere (i MapReduce), kan vi bruge en akkumulator. Derudover kan vi bruge akkumulatorer i alle Spark API ‘ er.
for PySpark, efter kode blok har detaljerne i en akkumulator klasse:

class pyspark.Accumulator(aid, value, accum_param)

her er et eksempel, Det har også en attribut kaldet værdi som den samme som udsendelsesvariablen, denne attribut gemmer også dataene, og derefter bruges den til at returnere en akkumulatorværdi. Men kun i et driverprogram er det anvendeligt.
så en akkumulatorvariabel bruges af flere arbejdere og returnerer en akkumuleret værdi i dette eksempel.

lad os diskutere PySpark Serialisatorer

----------------------------------------accumulator.py------------------------------------from pyspark import SparkContextsc = SparkContext("local", "Accumulator app")num = sc.accumulator(1)def f(x): global num num+=xrdd = sc.parallelize()rdd.foreach(f)final = num.valueprint "Accumulated value is -> %i" % (final)----------------------------------------accumulator.py------------------------------------

kommando

$SPARK_HOME/bin/spark-submit accumulator.py

Output
den akkumulerede værdi er 15.
så det handlede om PySpark Broadcast og akkumulator. Håber du kan lide vores forklaring.

konklusion

Skriv et svar

Din e-mailadresse vil ikke blive publiceret.