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)
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
Выходные данные — выходные данные для вышеуказанной команды приведены ниже —