我有一个没有缓存的RDD。我为它设置了默认的cache()
指令,并使用count()
来强制执行操作。
is_cached
方法返回True
,但在Spark用户界面中,我无法在存储选项卡中看到RDD(并且进一步调用count
的时间与第一次)。
toDebugString
返回:
(4)RDD CoalescedRDD [8]在NativeMethodAccessorImpl.java合并:[Memory Serialized 1x Replicated] \ n |在NativeMethodAccessorImpl.java的textFile上的MapPartitionsRDD [7]:[Memory Serialized 1x Replicated] \ n | s3:// ... HadoopRDD [6] at NativeFethodAccessorImpl.java的textFile:[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()