- PySpark 教程
- PySpark - 主頁
- PySpark - 簡介
- PySpark - 環境設定
- PySpark - SparkContext
- PySpark - RDD
- PySpark - 廣播和累加器
- PySpark - SparkConf
- PySpark - SparkFiles
- PySpark - 儲存級別
- PySpark - MLlib
- PySpark - 序列化器
- PySpark 有用資源
- PySpark - 快速指南
- PySpark - 有用資源
- PySpark - 討論
PySpark - 儲存級別
StorageLevel 決定 RDD 的儲存方式。在 Apache Spark 中,StorageLevel 決定 RDD 應儲存在記憶體中、硬碟上還是同時儲存在這兩者中。它還決定是否序列化 RDD 以及是否複製 RDD 分割槽。
下列程式碼塊包含 StorageLevel 的類定義 −
class pyspark.StorageLevel(useDisk, useMemory, useOffHeap, deserialized, replication = 1)
現在,為了確定 RDD 的儲存,有多個儲存級別,如下所示 −
DISK_ONLY = StorageLevel(True, False, False, False, 1)
DISK_ONLY_2 = StorageLevel(True, False, False, False, 2)
MEMORY_AND_DISK = StorageLevel(True, True, False, False, 1)
MEMORY_AND_DISK_2 = StorageLevel(True, True, False, False, 2)
MEMORY_AND_DISK_SER = StorageLevel(True, True, False, False, 1)
MEMORY_AND_DISK_SER_2 = StorageLevel(True, True, False, False, 2)
MEMORY_ONLY = StorageLevel(False, True, False, False, 1)
MEMORY_ONLY_2 = StorageLevel(False, True, False, False, 2)
MEMORY_ONLY_SER = StorageLevel(False, True, False, False, 1)
MEMORY_ONLY_SER_2 = StorageLevel(False, True, False, False, 2)
OFF_HEAP = StorageLevel(True, True, True, False, 1)
我們考慮以下 StorageLevel 示例,其中我們使用儲存級別 MEMORY_AND_DISK_2,這意味著 RDD 分割槽將複製 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-------------------------------------
命令 − 命令如下 −
$SPARK_HOME/bin/spark-submit storagelevel.py
輸出 − 上述命令的輸出如下 −
Disk Memory Serialized 2x Replicated