我们的数据仓库位于Redshift(50TB大小)。有时,业务用户会运行大型查询(连接太多,内联查询 - 由Tableau等BI工具生成)。大查询会降低数据库性能。
明智的做法是在Redshift之上使用Spark来卸载Redshift之外的一些计算?
或者通过添加更多节点来提高Redshift计算能力会更容易和更具成本效益吗?
如果我在Spark中执行list = list.filter(function(item) {
return item !== guid;
})
console.log(list);
。表通过JDBC连接并驻留在Redshift上,实际处理在哪里发生(在Spark或Redshift中)?
答案 0 :(得分:3)
对Amazon Redshift中存储的数据的任何查询都由Amazon Redshift节点执行。虽然Spark可以进行外部JDBC调用,但SQL将由Redshift执行。
有许多优化Redshift查询执行的技术:
首先查看占用过多资源的查询,然后通过更改每个表使用的排序键,分配键和压缩编码来确定是否可以优化这些查询。正确使用这些参数可以大大提高Redshift的性能。
然后,如果许多用户同时运行查询,请检查是否值得改进工作负载管理设置以创建具有不同内存设置的单独队列。
最后,如果性能仍然存在问题,请添加其他Redshift节点。 密集计算节点将提供更好的性能,因为它们使用SSD存储,但每TB存储的成本更高。