当前位置: 首页 > 文档资料 > PySpark 中文教程 >

StorageLevel(StorageLevel)

优质
小牛编辑
132浏览
2023-12-01

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

Command - 命令如下 -

$SPARK_HOME/bin/spark-submit storagelevel.py

Output - 上述命令的输出如下 -

Disk Memory Serialized 2x Replicated