2017-08-24 66 views
0

在我的代码,我有dataframes序列,其中我想筛选出数据帧的哪些是空的。我做的是这样的:星火的数据框count()函数采取非常长的

Seq(df1, df2).map(df => df.count() > 0) 

然而,这正在极长且消耗约7分钟,约2数据帧的各行100K的。

我的问题:为什么是星火的实现计数的()是缓慢的。有没有解决办法?

回答

4

计数是一个懒惰的操作。所以,你的数据帧有多大并不重要。但是如果你对数据有太多昂贵的操作来获得这个数据帧,那么一旦计数被调用,spark实际上会做所有的操作来获得这些数据帧。

一些昂贵的操作可能会需要哪些数据洗牌的操作。像GROUPBY,减少等

所以我的猜测是,你有一些复杂的处理让你用得到这个数据帧是太庞大了,这些dataframes或您的初始数据。