Mysql
 sql >> база данни >  >> RDS >> Mysql

java.lang.OutofMemorySpace:Java heap пространство, докато извлича 120 милиона реда от база данни в pyspark

Опитвате се да заредите в RAM твърде много данни . Първо трябва да намалите количеството данни, които SQL ви извлича, преди да достигнат Spark и го оптимизирайте с помощта на параметри на Spark, например раздели .

Помислете за една или повече от тези оптимизации:

  • Посочете в SELECT какви колони да видите изрично, само тези, от които се нуждаете, ако е възможно;
  • (Необработена заявка) Цикъл в while цикъл, докато можете да fetch редове, като завъртите всеки ред. Следните техники могат да работят чрез задаване на константа n_rows за четене в паметта и актуализиране на i индексирайте всяко колоездене:

LIMIT i,i+n_rows

BETWEEN i AND i+n_rows

WHILE primaryKey >= i AND primaryKey < i+n_rows

partitionColumn изберете колоната, която ще се използва, за да се определи как да се разделят данните (например първичният ключ ).

lowerBound установява минималната стойност на partitionColumn който ще бъде извлечен.

upperBound установява максималната стойност на partitionColumn който ще бъде извлечен.

numPartitions означава колко паралелни връзки искате да зададете за четене на данни през RDBMS.

Така Spark ще ви извлече набори от данни, използвайки редове, които бихте получили, ако правихте 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. mysql намира скорошни потребителски коментари

  2. JSON_SET() – Вмъкване или актуализиране на стойности в JSON документ в MySQL

  3. Как да получите тип текст на Doctrine?

  4. PHP дата, показваща '1970-01-01 ' след преобразуване

  5. docker-compose:повторно инициализиране на MySQL db всеки път