2017-06-11 14 views
0

Apache Ignite with Sparkを使用してSparkの結果を保存していますが、saveValuesを実行すると非常に時間がかかり、コンピュータのCPUとファンの速度が狂ってしまいます。私は3GHzのCPUと16GBのメモリを持っています。Apache IgniteはSparkの値を永久に保存します

私はそれに最終データフレームをマッピングするRDDを有する:

val visitsAggregatedRdd :RDD[VisitorsSchema] = aggregatedVenuesDf.rdd.map(....) 
println("COUNT: " + visitsAggregatedRdd.count().toString()) 
visitsCache.saveValues(visitsAggregatedRdd) 

行の合計数が、スパークが既にデータ処理を行っていると、それは非常に小さいことを意味する71です。 71行ごとに1つの小さなオブジェクトと小さな数と非常に短い文字列です。なぜvisitsCache.saveValuesはこの無限の時間と処理をとっているのですか?

+0

どのスレッドがビジーであるかを理解するには、スレッドダンプが役立ちます。 –

答えて

0

Spark Dataframeパーティションで問題があることが判明しました。 Sparkは、71行が6000個のパーティションに保存されていることを保存していました!簡単な解決策は、Igniteに保存する前にパーティションの数を減らすことです。

df = df.coalesce(1) 
関連する問題