PySpark - StorageLevel

StorageLevel decide cómo se debe almacenar RDD. En Apache Spark, StorageLevel decide si RDD debe almacenarse en la memoria o debe almacenarse en el disco, o ambos. También decide si serializar RDD y si replicar particiones RDD.

El siguiente bloque de código tiene la definición de clase de StorageLevel:

class pyspark.StorageLevel(useDisk, useMemory, useOffHeap, deserialized, replication = 1)

Ahora, para decidir el almacenamiento de RDD, existen diferentes niveles de almacenamiento, que se dan a continuación:

  • DISK_ONLY = StorageLevel (Verdadero, Falso, Falso, Falso, 1)

  • DISK_ONLY_2 = StorageLevel (Verdadero, Falso, Falso, Falso, 2)

  • MEMORY_AND_DISK = StorageLevel (Verdadero, Verdadero, Falso, Falso, 1)

  • MEMORY_AND_DISK_2 = StorageLevel (Verdadero, Verdadero, Falso, Falso, 2)

  • MEMORY_AND_DISK_SER = StorageLevel (Verdadero, Verdadero, Falso, Falso, 1)

  • MEMORY_AND_DISK_SER_2 = StorageLevel (Verdadero, Verdadero, Falso, Falso, 2)

  • MEMORY_ONLY = StorageLevel (Falso, Verdadero, Falso, Falso, 1)

  • MEMORY_ONLY_2 = StorageLevel (Falso, Verdadero, Falso, Falso, 2)

  • MEMORY_ONLY_SER = StorageLevel (Falso, Verdadero, Falso, Falso, 1)

  • MEMORY_ONLY_SER_2 = StorageLevel (Falso, Verdadero, Falso, Falso, 2)

  • OFF_HEAP = StorageLevel (Verdadero, Verdadero, Verdadero, Falso, 1)

Consideremos el siguiente ejemplo de StorageLevel, donde usamos el nivel de almacenamiento MEMORY_AND_DISK_2, lo que significa que las particiones RDD tendrán una replicación de 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 - El comando es el siguiente -

$SPARK_HOME/bin/spark-submit storagelevel.py

Output - La salida para el comando anterior se da a continuación -

Disk Memory Serialized 2x Replicated