Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

java.lang.OutofMemorySpace:Không gian đống Java trong khi tìm nạp 120 triệu hàng từ cơ sở dữ liệu trong pyspark

Bạn đang cố tải trong RAM quá nhiều dữ liệu . Trước tiên, bạn nên giảm lượng dữ liệu SQL truy xuất bạn trước khi nó đến Spark và tối ưu hóa nó bằng cách sử dụng các thông số tia lửa, ví dụ: phân vùng .

Hãy xem xét một hoặc nhiều cách tối ưu hóa sau:

  • Chỉ định trong SELECT những cột nào để xem rõ ràng, chỉ những cột bạn cần, nếu có thể;
  • (Truy vấn thô) Lặp lại trong một while chu kỳ cho đến khi bạn có thể fetch hàng bằng cách lặp lại từng hàng. Các kỹ thuật sau có thể hoạt động bằng cách đặt một n_rows không đổi để đọc trong bộ nhớ và cập nhật i lập chỉ mục mỗi lần đạp xe:

LIMIT i,i+n_rows

BETWEEN i AND i+n_rows

WHILE primaryKey >= i AND primaryKey < i+n_rows

partitionColumn chọn cột sẽ được sử dụng để xác định cách tách dữ liệu (Ví dụ: khóa chính ).

lowerBound thiết lập giá trị tối thiểu của partitionColumn sẽ được tìm nạp.

upperBound thiết lập giá trị tối đa của partitionColumn sẽ được tìm nạp.

numPartitions nghĩa là bạn muốn đặt bao nhiêu kết nối song song để đọc dữ liệu thông qua RDBMS.

Vì vậy, Spark sẽ truy xuất tập dữ liệu của bạn bằng cách sử dụng các hàng mà bạn sẽ nhận được nếu bạn đang thực hiện 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. JSON_UNQUOTE () - Xóa trích dẫn khỏi tài liệu JSON trong MySQL

  2. Cách hiển thị giá trị hàng dưới dạng cột trong MySQL

  3. Tạo bảng với mysql, php và ajax (với jquery)

  4. Cách chèn giá trị vào MYSQL-Table bằng cách sử dụng Select-Statements

  5. tham chiếu nhiều khóa ngoại php mysql