Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

java.lang.OutofMemorySpace:Java heap space sambil mengambil 120 juta baris dari database di pyspark

Anda mencoba memuat di RAM terlalu banyak data . Anda harus terlebih dahulu mengurangi jumlah data yang diambil SQL sebelum mencapai Spark dan optimalkan menggunakan parameter percikan, misalnya partisi .

Pertimbangkan satu atau beberapa pengoptimalan berikut:

  • Tentukan di SELECT kolom apa yang harus dilihat secara eksplisit, hanya yang Anda butuhkan, jika memungkinkan;
  • (Kueri mentah) Loop dalam while siklus sampai Anda dapat fetch baris dengan mengulang setiap baris. Teknik berikut dapat bekerja dengan menyetel n_rows konstanta untuk membaca dalam memori dan memperbarui i indeks setiap siklus:

LIMIT i,i+n_rows

BETWEEN i AND i+n_rows

WHILE primaryKey >= i AND primaryKey < i+n_rows

partitionColumn pilih kolom yang akan digunakan untuk menentukan cara membagi data (Misalnya kunci utama ).

lowerBound menetapkan nilai minimum dari partitionColumn yang akan diambil.

upperBound menetapkan nilai maksimum dari partitionColumn yang akan diambil.

numPartitions berarti berapa banyak koneksi paralel yang ingin Anda atur untuk membaca data melalui RDBMS.

Jadi Spark akan mengambil set data Anda menggunakan baris yang akan Anda dapatkan jika Anda melakukan 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. Cara portabel untuk menyediakan periode cooldown berbasis IP?

  2. Jenis kesalahan sintaks tidak valid =MyISAM dalam DDL dihasilkan oleh Hibernate

  3. Django - nilai nol dalam kolom melanggar batasan bukan-null di Admin Django

  4. Masalah bindParam PDO

  5. Penggantian PATINDEX() di MYSQL