当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


Python pyspark DataFrame.spark.persist用法及代码示例


本文简要介绍 pyspark.pandas.DataFrame.spark.persist 的用法。

用法:

spark.persist(storage_level: pyspark.storagelevel.StorageLevel = StorageLevel(True, True, False, False, 1)) → CachedDataFrame

生成并缓存具有特定存储级别的当前DataFrame。如果未给出 StogeLevel,则默认使用 MEMORY_AND_DISK 级别,如 PySpark。

pandas-on-Spark DataFrame 作为受保护资源生成,其相应的数据被缓存,在上下文执行结束后,这些数据将被取消缓存。

例子

>>> import pyspark
>>> df = ps.DataFrame([(.2, .3), (.0, .6), (.6, .0), (.2, .1)],
...                   columns=['dogs', 'cats'])
>>> df
   dogs  cats
0   0.2   0.3
1   0.0   0.6
2   0.6   0.0
3   0.2   0.1

将 StorageLevel 设置为 MEMORY_ONLY

>>> with df.spark.persist(pyspark.StorageLevel.MEMORY_ONLY) as cached_df:
...     print(cached_df.spark.storage_level)
...     print(cached_df.count())
...
Memory Serialized 1x Replicated
dogs    4
cats    4
dtype: int64

将 StorageLevel 设置为 DISK_ONLY

>>> with df.spark.persist(pyspark.StorageLevel.DISK_ONLY) as cached_df:
...     print(cached_df.spark.storage_level)
...     print(cached_df.count())
...
Disk Serialized 1x Replicated
dogs    4
cats    4
dtype: int64

如果未给出StorageLevel,则默认使用MEMORY_AND_DISK

>>> with df.spark.persist() as cached_df:
...     print(cached_df.spark.storage_level)
...     print(cached_df.count())
...
Disk Memory Serialized 1x Replicated
dogs    4
cats    4
dtype: int64
>>> df = df.spark.persist()
>>> df.to_pandas().mean(axis=1)
0    0.25
1    0.30
2    0.30
3    0.15
dtype: float64

要取消缓存数据帧,请使用 unpersist 函数

>>> df.spark.unpersist()

相关用法


注:本文由纯净天空筛选整理自spark.apache.org大神的英文原创作品 pyspark.pandas.DataFrame.spark.persist。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。