- PySpark Tutorial
- PySpark - Home
- PySpark - Introduction
- PySpark - Environment Setup
- PySpark - SparkContext
- PySpark - RDD
- PySpark - Broadcast & Accumulator
- PySpark - SparkConf
- PySpark - SparkFiles
- PySpark - StorageLevel
- PySpark - MLlib
- PySpark - Serializers
- PySpark Useful Resources
- PySpark - Quick Guide
- PySpark - Useful Resources
- PySpark - Discussion
PySpark - 存储级别
StorageLevel决定RDD应该如何存储。在 Apache Spark 中,StorageLevel 决定 RDD 是应该存储在内存中还是应该存储在磁盘上,或者两者都存储。它还决定是否序列化 RDD 以及是否复制 RDD 分区。
以下代码块具有 StorageLevel 的类定义 -
class pyspark.StorageLevel(useDisk, useMemory, useOffHeap, deserialized, replication = 1)
现在,为了决定 RDD 的存储,有不同的存储级别,如下所示 -
DISK_ONLY = 存储级别(真、假、假、假、1)
DISK_ONLY_2 = 存储级别(真、假、假、假、2)
MEMORY_AND_DISK = 存储级别(真、真、假、假、1)
MEMORY_AND_DISK_2 = 存储级别(真、真、假、假、2)
MEMORY_AND_DISK_SER = 存储级别(真、真、假、假、1)
MEMORY_AND_DISK_SER_2 = 存储级别(真、真、假、假、2)
MEMORY_ONLY = 存储级别(假、真、假、假、1)
MEMORY_ONLY_2 = 存储级别(假、真、假、假、2)
MEMORY_ONLY_SER = 存储级别(假、真、假、假、1)
MEMORY_ONLY_SER_2 = 存储级别(假、真、假、假、2)
OFF_HEAP = 存储级别(真、真、真、假、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