【问题标题】:Apache Ignite takes forever to save values on SparkApache Ignite 需要很长时间才能在 Spark 上保存价值
【发布时间】:2017-06-11 22:32:22
【问题描述】:

我正在使用带有 Spark 的 Apache Ignite 来保存 Spark 的结果,但是,当我执行 saveValues 时,它需要很长时间,并且计算机的 CPU 和风扇速度变得疯狂。我有 3GHz CPU 和 16GB 内存。

我有一个 RDD,我在其中映射了最终的 DataFrame:

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

总行数为 71,这意味着 Spark 已经完成了数据处理,并且非常小; 71 行,每一行都是小对象,数字很少,字符串很短。那么为什么 'visitsCache.saveValues' 会占用无限的时间和处理时间!?

【问题讨论】:

  • 线程转储有助于了解哪些线程处于忙碌状态。

标签: apache-spark dataframe rdd ignite


【解决方案1】:

事实证明这是 Spark Dataframe 分区中的一个问题。 Spark 将这 71 行保存在 6000 个分区中!一个简单的解决方案是在 Ignite 中保存之前减少分区数量:

df = df.coalesce(1)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-12-25
    • 1970-01-01
    • 2016-06-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多