Mysql
 sql >> Baza danych >  >> RDS >> Mysql

java.lang.OutofMemorySpace:Przestrzeń sterty Java podczas pobierania 120 milionów wierszy z bazy danych w pyspark

Próbujesz załadować do pamięci RAM za dużo danych . Najpierw należy zmniejszyć ilość danych pobieranych przez SQL, zanim osiągnie Spark i zoptymalizuj go za pomocą parametrów iskry, na przykład partycji .

Rozważ jedną lub więcej z tych optymalizacji:

  • Określ w SELECT jakie kolumny wyświetlić wprost, tylko te, których potrzebujesz, jeśli to możliwe;
  • (Zapytanie surowe) Pętla w while cykl aż będziesz mógł fetch wiersze, zapętlając każdy wiersz. Poniższe techniki mogą działać poprzez ustawienie stałej n_rows czytać w pamięci i aktualizować i indeksuj każdą jazdę na rowerze:

LIMIT i,i+n_rows

BETWEEN i AND i+n_rows

WHILE primaryKey >= i AND primaryKey < i+n_rows

partitionColumn wybierz kolumnę, która będzie używana do określenia sposobu podziału danych (na przykład klucz podstawowy ).

lowerBound ustala wartość minimalną z partitionColumn które zostaną pobrane.

upperBound ustala wartość maksymalną z partitionColumn które zostaną pobrane.

numPartitions oznacza ile równoległych połączeń chcesz ustawić do odczytu danych przez RDBMS.

Tak więc Spark pobierze zestawy danych za pomocą wierszy, które otrzymasz, gdy wykonasz SELECT * FROM table WHERE partitionColumn BETWEEN lowerBound AND upperBound .




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Pobieranie danych do wykresu histogramu

  2. Pula połączeń Perla

  3. MySQL Uzupełnij brakujące daty między dwiema datami dla danego statusu

  4. Kolumna INT(3) nie przycinająca wartości do odpowiedniej długości i pozwalająca na wstawienie pełnej wartości - MySQL

  5. Naprawianie błędu PHP PEAR