当指定存储级别时,在 pyspark2 中持久化数据帧不起作用。我究竟做错了啥?

Posted

技术标签:

【中文标题】当指定存储级别时,在 pyspark2 中持久化数据帧不起作用。我究竟做错了啥?【英文标题】:Persisting a data frame in pyspark2 does not work when a storage level is specified. What am I doing wrong?当指定存储级别时,在 pyspark2 中持久化数据帧不起作用。我究竟做错了什么? 【发布时间】:2019-11-22 03:21:15 【问题描述】:

我试图在执行连接之前保留两个非常大的数据帧以解决“java.util.concurrent.TimeoutException:Futures timed out...”问题(参考:Why does join fail with "java.util.concurrent.TimeoutException: Futures timed out after [300 seconds]"?)。

Persist() 单独工作,但是当我尝试指定存储级别时,我收到名称错误。

我尝试了以下方法:

df.persist(pyspark.StorageLevel.MEMORY_ONLY) 
NameError: name 'MEMORY_ONLY' is not defined

df.persist(StorageLevel.MEMORY_ONLY) 
NameError: name 'StorageLevel' is not defined

import org.apache.spark.storage.StorageLevel 
ImportError: No module named org.apache.spark.storage.StorageLevel

任何帮助将不胜感激。

【问题讨论】:

【参考方案1】:

你必须导入合适的包:-

from pyspark import StorageLevel

【讨论】:

【参考方案2】:

以下对我有用:

from pyspark.storagelevel import StorageLevel

df.persist(StorageLevel.MEMORY_ONLY)

【讨论】:

【参考方案3】:

导入pyspark包

import pyspark

【讨论】:

以上是关于当指定存储级别时,在 pyspark2 中持久化数据帧不起作用。我究竟做错了啥?的主要内容,如果未能解决你的问题,请参考以下文章

sessionStorage和localStorage

Redis学习笔记三

rdb 和 aof

H5新增的Web Storage本地存储

源码级别了解 Redis 持久化

运维实战 Redis负载均衡+去中心化+持久化存储