sql >> Database teknologi >  >> RDS >> Mysql

java.lang.OutofMemorySpace:Java heap plads, mens der hentes 120 millioner rækker fra databasen i pyspark

Du forsøger at indlæse RAM for meget data . Du bør først reducere mængden af ​​data, som SQL henter dig, før den når Spark og optimer det ved hjælp af gnistparametre, for eksempel partitioner .

Overvej en eller flere af disse optimeringer:

  • Angiv i SELECT hvilke kolonner der skal ses eksplicit, kun dem du har brug for, hvis det er muligt;
  • (Rå forespørgsel) Sløjfe i en while cyklus indtil du kan fetch rækker ved at løkke hver række. Følgende teknikker kunne fungere ved at indstille en konstant n_rows at læse i hukommelsen og opdatere i indekser hver cykling:

LIMIT i,i+n_rows

BETWEEN i AND i+n_rows

WHILE primaryKey >= i AND primaryKey < i+n_rows

partitionColumn vælg den kolonne, der skal bruges til at bestemme, hvordan dataene skal opdeles (f.eks. den primære nøgle ).

lowerBound etablerer minimumsværdien af partitionColumn som vil blive hentet.

upperBound etablerer maksimumværdien af partitionColumn som vil blive hentet.

numPartitions betyder, hvor mange parallelle forbindelser du vil indstille til at læse data gennem RDBMS.

Så Spark vil hente dine datasæt ved hjælp af rækker, som du ville få, hvis du lavede SELECT * FROM table WHERE partitionColumn BETWEEN lowerBound AND upperBound .




  1. mysql lagret procedure:Brug af erklærede vars i en limit-sætning returnerer en fejl

  2. hvordan man laver nedtællingstimeren til ikke at nulstille ved sideopdatering

  3. Mysql slette alle indlæg, der har en given meta_key

  4. MySQL's MD5-hash er forkert