当指定存储级别时,在 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 中持久化数据帧不起作用。我究竟做错了啥?的主要内容,如果未能解决你的问题,请参考以下文章