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 ,假,假,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 ----------来自pyspark导入的--------------------------- 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