【问题标题】:Spark Caching won't work for specific RDDSpark Caching 不适用于特定的 RDD
【发布时间】:2015-12-29 16:08:27
【问题描述】:

我有一个没有被缓存的 RDD。我为其设置了默认的cache() 指令,并使用count() 强制执行操作。

is_cached 方法返回 True,但在 Spark UI 中我看不到存储选项卡中的 RDD(进一步调用 count 所用的时间与第一次完全相同)。

toDebugString 返回:

(4) RDD CoalescedRDD[8] at coalesce at NativeMethodAccessorImpl.java:-2 [Memory Serialized 1x Replicated]\n | MapPartitionsRDD[7] at textFile at NativeMethodAccessorImpl.java:-2 [Memory Serialized 1x Replicated]\n | s3://... HadoopRDD[6] at textFile at NativeMethodAccessorImpl.java:-2 [Memory Serialized 1x Replicated]'

还有StorageLevel:

StorageLevel(False, True, False, False, 1)

输入数据为 64MB,我有 2 个执行程序,每个执行程序剩余 500MB。其他 RDD 缓存就好了。

代码:
*合并前 numPartitions 为 5943

RDD = sc.textFile('s3:/...',use_unicode=False).coalesce(4)
RDD.cache()
RDD.count()

【问题讨论】:

  • 我们需要一个最小的可重现代码示例

标签: apache-spark pyspark


【解决方案1】:

您可以在 spark UI 的 executor 选项卡中看到缓存内存。对于内存和磁盘上的相同时间,这是因为 rdd/df 上的一个操作将花费与两者在 io 上所需的时间相同的时间。

【讨论】:

  • 谢谢,但我的意思是 RDD 不会出现在那里(与所有其他缓存的 RDD 一起)
猜你喜欢
  • 2018-05-30
  • 2019-12-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-03-14
  • 1970-01-01
  • 2019-10-06
相关资源
最近更新 更多