PySpark StorageLevel PySpark SparkFiles PySpark MLlib 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------------------------------------- 命令 - 命令如下 $SPARK_HOME/bin/spark-submit storagelevel.py 输出 - 上述命令的输出如下 Disk Memory Serialized 2x Replicated PySpark SparkFiles PySpark MLlib