我们已经引入了Spark Cache来操作我们产品的内存中的数据,因为在数据量巨大(大数据)的情况下积极地使用远程数据库太耗费时间。
现在我们已经注意到,一旦将数据加载到spark响应速度更慢,然后直接查询原始源(远程数据库)
我们正在使用sparkSQL来检索数据,同样的查询早期从远程数据库返回数据,因为同一台计算机上的单个节点的Spark缓存落后很长时间。
任何指导都将不胜感激。
使用Spark UI快照进行示例查询:
SELECT column1, SUM(column2) FROM tableName WHERE column2 > 200 GROUP BY column1 ORDER BY column1
Spark内存中的数据 100%已加载。 See Image
加载Spark的结果需要 15分钟。 See Image
Spark Cache包含 50,000条记录。测试查询的计算机具有 16个CPU核心, 64GB内存。
我的问题是50,000条记录都没有,为什么需要这么多分钟而不是毫秒分数。凡事都是在本地机器上完成的。
答案 0 :(得分:0)
首先,检查数据集是否100%缓存(例如在Spark UI中)。如果没有,Spark必须远程或从磁盘获取一些数据,并将其与内存数据相结合。
其次,Spark可能没有专用数据库那么快,因此通过网络从非常快的数据库传输结果可能比让通用引擎计算结果更快,特别是如果数据库运行在单机。