sql >> Databáze >  >> RDS >> Mysql

java.lang.OutofMemorySpace:Java haldový prostor při načítání 120 milionů řádků z databáze v pysparku

Pokoušíte se načíst do paměti RAM příliš mnoho dat . Nejprve byste měli snížit množství dat, které vám SQL načte, než dosáhne Spark a optimalizovat jej pomocí parametrů jiskry, například oddílů .

Zvažte jednu nebo více z těchto optimalizací:

  • Uveďte v SELECT jaké sloupce explicitně zobrazit, pokud možno pouze ty, které potřebujete;
  • (Nezpracovaný dotaz) Smyčka v while cyklujte, dokud nebudete moci fetch řádky smyčkováním každého řádku. Následující techniky by mohly fungovat nastavením konstanty n_rows pro čtení v paměti a aktualizaci i index každé cyklování:

LIMIT i,i+n_rows

BETWEEN i AND i+n_rows

WHILE primaryKey >= i AND primaryKey < i+n_rows

partitionColumn vyberte sloupec, který bude použit k určení způsobu rozdělení dat (například primární klíč ).

lowerBound stanoví minimální hodnotu z partitionColumn který bude načten.

upperBound stanoví maximální hodnotu z partitionColumn který bude načten.

numPartitions znamená, kolik paralelních připojení chcete nastavit pro čtení dat prostřednictvím RDBMS.

Spark vám tedy načte datové sady pomocí řádků, které byste získali, kdybyste dělali SELECT * FROM table WHERE partitionColumn BETWEEN lowerBound AND upperBound .




  1. Jak vytvořit nový databázový diagram pomocí MySQL Workbench

  2. Jak spustit makro z navigačního tlačítka v aplikaci Access

  3. Zamykání stolu pomocí režimu spánku

  4. mysql dotaz - formát data na výstupu?