如何识别可用 RDD 列表?

Posted

技术标签:

【中文标题】如何识别可用 RDD 列表?【英文标题】:How to Identify the list of available RDDs? 【发布时间】:2017-05-01 20:28:13 【问题描述】:

我正在使用以下命令来获取可用已注册临时表的列表 sqlContext.sql("show tables").collect().foreach(println)

是否有任何类似的命令来获取可用 RDD 的列表?

这是我的要求(使用 scala) 1.需要动态创建一些RDD 2. 确定可用 RDD 的列表 3.删除/删除/清除不需要的RDD并继续前进

How to delete an RDD in PySpark for the purpose of releasing resources?

附加说明,我浏览了这个链接,但它并没有回答我所有的问题......我也尝试了下面的方法,但在 unpersist 之前和之后没有发现任何区别,所以不知道如何确认我的RDD已释放内存

val tempRDD1 = RDD1.reduceByKey((acc,value)=> acc+value)
tempRDD1.collect.foreach(println)
tempRDD1.unpersist()
tempRDD1.collect.foreach(println)

【问题讨论】:

Spark list all cached RDD names的可能重复 您提到的链接有一些我正在寻找的要点,但没有一个答案对我有帮助。一个答案说“我们注意到它实际上并没有持久化” - 不工作,另一个答案说“它尚未在 python 中实现” - 但我正在寻找 scala。 【参考方案1】:

RDD 数据在 1. 持久化(缓存)和 2. 发生强制前面转换发生的动作之前不会保存。如果其中任何一个都没有发生,则不会存储任何数据。任何看似“已创建”的 RDD 都只会创建一个行动计划以在以后需要时生成数据。这种模型称为惰性求值。

在您的示例中,没有缓存任何 RDD,因此不会将任何数据存储在内存中。并且unpersist 调用将无效。

【讨论】:

其实我并没有分享我的完整代码,但是如果你仔细观察,你会注意到代码有多个 RDD,tempRDD1 是从 RDD1 创建的,并且已经在 RDD1 上应用了操作跨度> 这些 RDD 中是否有任何显式缓存? 没有缓存,它们是临时的RDD,几步之后就不需要了 如果它们没有被缓存,则不会为它们存储任何数据。您的示例中的 tempRDD1 不需要“从内存中释放”,因为它从未存储在内存中。如果你连续运行tempRDD1.collect.foreach(println) 10 次,它将完成所有计算,以创建 RDD1、reduceByKey 和收集操作 10 次。没有缓存 = 没有数据存储在内存中 = 不需要查找和取消持久化所有临时 RDD

以上是关于如何识别可用 RDD 列表?的主要内容,如果未能解决你的问题,请参考以下文章

在 Apple 的 Vision 框架中,我如何判断哪些语言可用于文本识别?

如何在 gulp 中获取可用任务列表

如何识别安卓可用网络中的信号种类??? 系统升级后 完全就变了 气死我了 如图 现在只显

Xamarin iOS 如何获取所有可用的 SysSound 列表?

如何获取可用输出音频源列表(扬声器、耳机、蓝牙)

如何从日历数据库中获取可用时间段列表