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