1

我已经在独立模式下设置了一个 spark 作业服务器(参见https://github.com/spark-jobserver/spark-jobserver/tree/jobserver-0.6.2-spark-1.6.1 )。

我创建了一个要使用的默认上下文。目前我在这种情况下有两种工作:

  • 与另一台服务器同步:
    • 从其他服务器的数据库中转储数据;
    • 执行一些连接,减少数据,生成新的 DF;
    • 将得到的DF保存在parquet文件中;
    • 将此 parquet 文件加载为临时表并缓存它;
  • 查询:对缓存表执行 sql 查询。

我坚持的唯一对象是将缓存的最终表。

我不明白为什么当我执行同步时,所有分配的内存都被使用并且从未释放,但是,如果我直接加载 parquet 文件(重新启动服务器,使用之前生成的 parquet 文件),只使用了一小部分内存。

我错过了什么?有没有办法释放未使用的内存?

谢谢

4

1 回答 1

1

您可以通过取消持久化缓存表来释放内存:yourTable.unpersist()

于 2016-12-15T14:51:07.533 回答