PySpark - StorageLevel
StorageLevel quyết định cách RDD nên được lưu trữ. Trong Apache Spark, StorageLevel quyết định liệu RDD nên được lưu trữ trong bộ nhớ hay nên lưu trữ trên đĩa hoặc cả hai. Nó cũng quyết định xem có nên tuần tự hóa RDD hay không và có tái tạo các phân vùng RDD hay không.
Khối mã sau có định nghĩa lớp của StorageLevel:
class pyspark.StorageLevel(useDisk, useMemory, useOffHeap, deserialized, replication = 1)
Bây giờ, để quyết định việc lưu trữ RDD, có các mức lưu trữ khác nhau, được đưa ra bên dưới:
DISK_ONLY = StorageLevel (Đúng, Sai, Sai, Sai, 1)
DISK_ONLY_2 = StorageLevel (Đúng, Sai, Sai, Sai, 2)
MEMORY_AND_DISK = StorageLevel (Đúng, Đúng, Sai, Sai, 1)
MEMORY_AND_DISK_2 = StorageLevel (Đúng, Đúng, Sai, Sai, 2)
MEMORY_AND_DISK_SER = StorageLevel (Đúng, Đúng, Sai, Sai, 1)
MEMORY_AND_DISK_SER_2 = StorageLevel (Đúng, Đúng, Sai, Sai, 2)
MEMORY_ONLY = StorageLevel (Sai, Đúng, Sai, Sai, 1)
MEMORY_ONLY_2 = StorageLevel (Sai, Đúng, Sai, Sai, 2)
MEMORY_ONLY_SER = StorageLevel (Sai, Đúng, Sai, Sai, 1)
MEMORY_ONLY_SER_2 = StorageLevel (Sai, Đúng, Sai, Sai, 2)
OFF_HEAP = StorageLevel (Đúng, Đúng, Đúng, Sai, 1)
Chúng ta hãy xem xét ví dụ sau về StorageLevel, nơi chúng tôi sử dụng mức lưu trữ MEMORY_AND_DISK_2, có nghĩa là các phân vùng RDD sẽ có bản sao của 2.
------------------------------------storagelevel.py-------------------------------------
from pyspark import SparkContext
import pyspark
sc = SparkContext (
"local",
"storagelevel app"
)
rdd1 = sc.parallelize([1,2])
rdd1.persist( pyspark.StorageLevel.MEMORY_AND_DISK_2 )
rdd1.getStorageLevel()
print(rdd1.getStorageLevel())
------------------------------------storagelevel.py-------------------------------------
Command - Lệnh như sau:
$SPARK_HOME/bin/spark-submit storagelevel.py
Output - Đầu ra cho lệnh trên được đưa ra dưới đây:
Disk Memory Serialized 2x Replicated