Bằng cách sử dụng unpersist() phương pháp của RDD/DataFrame / Dataset bạn có thể thả DataFrame bộ nhớ đệm Trong Spark hoặc PySpark. Trong bài viết này, chúng ta hãy hiểu làm thế nào để thả Spark DataFrame từ bộ nhớ đệm và chính xác là gì bộ nhớ đệm Là.

1. Bộ nhớ đệm Trong Tia lửa?

Trong Tia lửa hoặc PySpark, Caching DataFrame là kỹ thuật được sử dụng nhiều nhất để sử dụng lại một số phép tính. Tia lửa có khả năng tăng cường các truy vấn đang sử dụng cùng một dữ liệu bằng các kết quả được lưu trong bộ nhớ cache của các hoạt động trước đó.

Đang lưu vào bộ nhớ đệm Spark DataFrame một chuyển đổi lười biếng, vì vậy ngay lập tức sau khi gọi cache() không có gì xảy ra với dữ liệu nhưng kế hoạch truy vấn được cập nhật bởi Cache Manager bằng cách thêm một nhà điều hành mới. Acutal cache xảy ra khi bạn gọi Tia lửa các hành động.

InMemoryRelation. Trên một cấp cao, đây chỉ là để lưu trữ một số thông tin sẽ được sử dụng trong quá trình thực thi truy vấn sau này khi một số hành động được gọi. Tia lửa sẽ tìm kiếm dữ liệu trong lớp bộ nhớ đệm và đọc nó từ đó nếu nó có sẵn. Nếu nó không tìm thấy dữ liệu trong lớp bộ nhớ đệm (chắc chắn xảy ra lần đầu tiên khi truy vấn chạy), nó sẽ chịu trách nhiệm lấy dữ liệu ở đó và nó sẽ sử dụng nó ngay sau đó.

Để tạo một bộ nhớ đệm sử dụng những điều sau đây. Nơi đây, count() là một hành động do đó hàm này bắt đầu bộ nhớ đệm Khung dữ liệu.

  
// Cache the DataFrame
df.  cache ()
df.count()
 

2. Giám sát Bộ nhớ đệm

Thực ra, Tia lửa tự động giám sát bộ nhớ đệm sử dụng trên mỗi nút và loại bỏ các phân vùng dữ liệu cũ trong một thời trang ít được sử dụng gần đây (LRU). Vì vậy, ít được sử dụng gần đây nhất sẽ bị xóa đầu tiên khỏi bộ nhớ đệm .

3. Thả Khung dữ liệu từ Bộ nhớ đệm

Bạn cũng có thể xóa thủ công Khung dữ liệu từ bộ nhớ đệm sử dụng không tin tưởng () phương thức trong Spark / PySpark . unpersist() đánh dấu D một taFrame là không liên tục và xóa tất cả các khối cho nó khỏi bộ nhớ và đĩa. unpersist(Boolean) với các khối đối số cho đến khi tất cả các khối từ bộ nhớ đệm bị xóa.

Cú pháp

// Syntax
 unpersist () :  Dataset .this.type
 unpersist (blocking : scala.Boolean) :  Dataset .this.type

Thí dụ

4. Bảng bỏ bộ nhớ cache

Nếu bảng được lưu trong bộ nhớ đệm bằng cách sử dụng createOrReplaceTempView() thì bạn phải sử dụng phương pháp tiếp cận khác để xóa nó khỏi bộ nhớ đệm . Tại đây, số lượng kích hoạt bộ nhớ đệm xảy ra.

// Create table
df.createOrReplaceTempView(tableName)
spark.table("nums"). cache 
spark.table("nums").count 

Để xóa bảng này khỏi bộ nhớ đệm sử dụng cái sau

// Remove from  cache   a  specific table
spark.catalog.uncacheTable(tableName)

Để xóa tất cả các bảng khỏi bộ nhớ đệm .

// Clear all tables from  cache 
spark.catalog.clearCache()

Nếu bạn đang sử dụng phiên bản cũ hơn của Tia lửa (<1,6), sử dụng các phương pháp từ SQLContext.

// Remove from  cache   a  specific table
sqlContext.uncacheTable(tableName)

// Clear all tables from  cache 
sqlContext.clearCache()

4. Kết luận

Trong bài viết này, bạn đã học cách bộ nhớ đệm () Spark DataFrame và làm thế nào để loại bỏ bằng cách sử dụng unpersist () phương pháp. bộ nhớ đệm () một kỹ thuật tối ưu hóa để lưu kết quả tính toán tạm thời của Khung dữ liệu hoặc Dataset và sử dụng lại chúng sau đó. Ngoài ra, học cách thả Khung dữ liệu từ Bộ nhớ đệm trong tia lửa với Scala các ví dụ.

Tất cả các phương pháp Spark Drop DataFrame từ Cache mà tôi đã đề cập đều hoạt động tốt. Cảm ơn các bạn đã đọc và hãy bình luận bên dưới với những suy nghĩ của bạn về bài viết này và chia sẻ signalfix.net với bạn bè của bạn.