PySpark - StorageLevel

StorageLevel decide come memorizzare RDD. In Apache Spark, StorageLevel decide se RDD deve essere archiviato nella memoria o deve essere archiviato sul disco o entrambi. Decide inoltre se serializzare RDD e se replicare le partizioni RDD.

Il seguente blocco di codice ha la definizione di classe di StorageLevel -

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

Ora, per decidere l'archiviazione di RDD, ci sono diversi livelli di archiviazione, che sono indicati di seguito:

  • 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)

Consideriamo il seguente esempio di StorageLevel, in cui utilizziamo il livello di archiviazione MEMORY_AND_DISK_2, il che significa che le partizioni RDD avranno la replica di 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 - Il comando è il seguente -

$SPARK_HOME/bin/spark-submit storagelevel.py

Output - L'output per il comando precedente è fornito di seguito -

Disk Memory Serialized 2x Replicated