您有一个正确的想法:用于
rdd.count()计算行数。没有更快的方法。
我认为您应该问的问题是 为什么rdd.count()
这么慢?
答案是
rdd.count()“动作”,这是一个急切的 *** 作,因为它必须返回实际的数字。您之前执行的RDD *** 作
count()是“转换”-他们将RDD延迟地转换为另一个。实际上,转换实际上并没有执行,只是排队。调用时
count(),您将强制执行所有先前的惰性 *** 作。输入的文件需要立即加载,执行
map()s和
filter()s,执行随机播放等,直到最后我们有了数据并可以说出它有多少行。
请注意,如果您拨打
count()两次,所有这些都会发生两次。返回计数后,所有数据都将被丢弃!如果要避免这种情况,请调用
cache()RDD。然后,对的第二次调用
count()将很快,并且派生的RDD也会更快地计算出来。但是,在这种情况下,RDD必须存储在内存(或磁盘)中。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)