从Spark Cache VS数据库检索数据缓慢



我们在产品中引入了Spark Cache来处理内存中的数据,因为在数据大小巨大(BIG data(的情况下积极处理远程数据库太耗时了。

现在我们注意到,一旦数据加载到spark中,响应速度甚至比直接查询原始源(远程数据库(更慢

我们使用sparkSQL来检索数据,同样的Query更早地从远程数据库中返回数据,因为同一台计算机上单个节点的Spark缓存落后了很多时间。

如有任何指导,我们将不胜感激。

Spark UI快照示例查询:

SELECT column1, SUM(column2) FROM tableName WHERE column2 > 200 GROUP BY column1 ORDER BY column1

数据100%加载到内存中的Spark中。请参见图像
从Spark加载结果最多需要15分钟。请参见图像

Spark Cache包含大约50000条记录。测试查询的机器具有16个CPU核心,内存64GB

我的问题是,50000条记录根本不算什么,为什么它需要这么多分钟而不是几毫秒。每件事都在本地机器上完成。

首先,检查数据集是否100%缓存(例如在Spark UI中(。否则,Spark必须远程或从磁盘获取一些数据,并将其与内存中的数据相结合。

其次,Spark可能没有专用数据库那么快,因此通过网络从非常快的数据库传输结果可能比让通用引擎计算结果更快,尤其是当数据库在单机上运行时。

最新更新