sql >> Database >  >> RDS >> Mysql

java.lang.OutofMemorySpace:Java heap-ruimte tijdens het ophalen van 120 miljoen rijen uit de database in pyspark

U probeert te veel gegevens in het RAM te laden . U moet eerst de hoeveelheid gegevens verminderen die SQL u ophaalt voordat deze Spark bereikt en optimaliseer het met behulp van spark-parameters, bijvoorbeeld partities .

Overweeg een of meer van deze optimalisaties:

  • Geef op in SELECT welke kolommen u expliciet wilt bekijken, indien mogelijk alleen de kolommen die u nodig heeft;
  • (Onbewerkte zoekopdracht) Loop in een while cyclus totdat je kunt fetch rijen door elke rij te herhalen. De volgende technieken kunnen werken door een constante n_rows in te stellen om in het geheugen te lezen en i bij te werken indexeer elke fietstocht:

LIMIT i,i+n_rows

BETWEEN i AND i+n_rows

WHILE primaryKey >= i AND primaryKey < i+n_rows

partitionColumn selecteer de kolom die wordt gebruikt om te bepalen hoe de gegevens moeten worden gesplitst (bijvoorbeeld de primaire sleutel ).

lowerBound bepaalt de minimumwaarde van partitionColumn dat wordt opgehaald.

upperBound stelt de maximale waarde in van partitionColumn dat wordt opgehaald.

numPartitions betekent hoeveel parallelle verbindingen u wilt instellen voor het lezen van gegevens via RDBMS.

Dus Spark haalt je datasets op met behulp van rijen die je zou krijgen als je SELECT * FROM table WHERE partitionColumn BETWEEN lowerBound AND upperBound zou doen .




  1. MySQL + htaccess mod_rewrite?

  2. MySQL kapt tekst af met ellips

  3. Basisversiebeheer voor MySQL-tabel

  4. MySQL-query die gedeeltelijke sommen berekent