我正在使用Apache Ignite和Spark来保存Spark的结果,但是,当我执行saveValues时,它需要很长时间,并且计算机的CPU和风扇速度变得疯狂。我有3GHz CPU和16 GB内存。
我有一个RDD,我在其中映射最终的DataFrame:
val visitsAggregatedRdd :RDD[VisitorsSchema] = aggregatedVenuesDf.rdd.map(....)
println("COUNT: " + visitsAggregatedRdd.count().toString())
visitsCache.saveValues(visitsAggregatedRdd)
行总数为71,这意味着Spark已经完成了处理数据并且它非常小; 71行,每一行都是小对象,数字很少,字符串非常短。那么为什么要访问“密码保存”和“#39;正在花费这个无限的时间和处理!?
答案 0 :(得分:0)
原来这是Spark Dataframe分区中的一个问题。 Spark节省了那些保存在6000个分区中的71行!一个简单的解决方案是在保存Ignite之前减少分区数:
df = df.coalesce(1)