在我的代码中,我有一系列数据帧,我想过滤掉空的数据帧。我正在做类似的事情:
Seq(df1, df2).map(df => df.count() > 0)
然而,这是非常长,并且大约2个数据帧每个100k行消耗大约7分钟。
我的问题:为什么Spark的count()实现很慢。有解决办法吗?
答案 0 :(得分:5)
Count是一个懒惰的操作。所以你的数据帧有多大并不重要。但是如果你对数据进行了太多代价高昂的操作来获取这个数据帧,那么一旦调用了count,spark就会实际执行所有操作来获取这些数据帧。
一些代价高昂的操作可能是需要改组数据的操作。像groupBy一样,减少等等。
所以我的猜测是你有一些复杂的处理来获取这些数据帧或你用来获取这个数据帧的初始数据太大了。