Prestatieverbeteringen

Data opschonen met PySpark

Mike Metzger

Data Engineering Consultant

Het Spark-uitvoeringsplan uitleggen

voter_df = df.select(df['VOTER NAME']).distinct()
voter_df.explain()
== Physical Plan ==
*(2) HashAggregate(keys=[VOTER NAME#15], functions=[])
+- Exchange hashpartitioning(VOTER NAME#15, 200)
   +- *(1) HashAggregate(keys=[VOTER NAME#15], functions=[])
      +- *(1) FileScan csv [VOTER NAME#15] Batched: false, Format: CSV, Location: 
      InMemoryFileIndex[file:/DallasCouncilVotes.csv.gz], 
      PartitionFilters: [], PushedFilters: [], 
      ReadSchema: struct<VOTER NAME:string>
Data opschonen met PySpark

Wat is shuffling?

Shuffling is het verplaatsen van data tussen workers om een taak af te ronden

  • Verbergt complexiteit voor de gebruiker
  • Kan traag zijn
  • Verlaagt de doorvoer
  • Vaak nodig, maar minimaliseer het
Data opschonen met PySpark

Hoe shuffling beperken?

  • Beperk .repartition(num_partitions)
    • Gebruik liever .coalesce(num_partitions)
  • Wees voorzichtig met .join()
  • Gebruik .broadcast()
  • Mogelijk hoef je het niet te beperken
Data opschonen met PySpark

Broadcasting

Broadcasting:

  • Geeft elke worker een kopie van een object
  • Voorkomt onnodige communicatie tussen nodes
  • Kan .join() sterk versnellen

Gebruik .broadcast(<DataFrame>)

from pyspark.sql.functions import broadcast
combined_df = df_1.join(broadcast(df_2))
Data opschonen met PySpark

Laten we oefenen!

Data opschonen met PySpark

Preparing Video For Download...