我已经设置了一个spark-jobserver来启用对缩减数据集的复杂查询。
作业服务器执行两个操作:
- 与主远程数据库同步,它转储一些服务器的表,减少和聚合数据,将结果保存为 parquet 文件并将其作为 sql 表缓存在内存中。这个操作每天都会做;
- 查询,同步操作完成后,用户可以对聚合数据集执行 SQL 复杂查询,(最终)将结果导出为 csv 文件。每个用户一次只能进行一次查询,并等待其完成。
最大的表(在减少之前和之后,还包括一些连接)有近 30M 的行,至少有 30 个字段。
实际上,我正在开发一台具有 32GB 内存的开发机器,专用于作业服务器,并且一切运行顺利。问题在于,在生产环境中,我们与 PredictionIO 服务器共享相同数量的 ram。
我在问如何确定内存配置以避免内存泄漏或火花崩溃。
我是新手,所以每一个参考或建议都被接受。
谢谢