2017-08-24 23 views
0

私のコードでは、空のデータフレームをフィルタリングする一連のデータフレームがあります。私が何かやっている:Sparkのdataframe count()関数の処理時間が非常に長い

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

をしかし、これは非常に長いを取っているし、100kの行ごとのおよそ2データフレームのための約7分を消費しています。

私の質問:なぜSparkのcount()の実装が遅いのですか?回避策はありますか?

答えて

4

カウントは遅延操作です。したがって、データフレームの大きさは重要ではありません。しかし、このデータフレームを取得するためにデータに高価な操作をあまりにも多く費やした場合は、一度カウントをsparkと呼ぶと、実際にはこれらのデータフレームを取得するためのすべての操作が実行されます。

高価な操作の中には、データのシャッフルを必要とする操作があります。 groupByのように減らす

私の推測では、これらのデータフレームを取得するための複雑な処理や、このデータフレームを取得するために使用した初期データは大きすぎます。

関連する問題