【问题标题】:Execute query on Spark vs Redshift在 Spark 与 Redshift 上执行查询
【发布时间】:2017-04-07 21:18:55
【问题描述】:

我们的数据仓库位于 Redshift(50TB 大小)中。有时,业务用户会运行大型查询(过多的联接、内联查询 - 由 Tableau 等 BI 工具生成)。大查询会降低数据库性能。

  1. 在 Redshift 之上使用 Spark 来卸载 Redshift 之外的一些计算是否明智?

  2. 或者通过添加更多节点来提高 Redshift 计算能力是否更容易且更具成本效益?

  3. 如果我在 Spark 中执行 select a.col1, b.col2 from table1 a, table2 b where a.key = b.key。表通过 JDBC 连接并驻留在 Redshift 上,实际处理发生在哪里(在 Spark 或 Redshift 中)?

【问题讨论】:

    标签: apache-spark amazon-redshift data-warehouse


    【解决方案1】:

    对存储在 Amazon Redshift 中的数据的任何查询均由 Amazon Redshift 节点执行。虽然 Spark 可以进行外部 JDBC 调用,但 SQL 将由 Redshift 执行。

    有很多技术可以优化 Redshift 查询执行:

    首先查看消耗过多资源的查询,并确定是否可以通过更改每个表使用的排序键、分布键和压缩编码来优化它们。正确使用这些参数可以大大提高 Redshift 性能。

    然后,如果许多用户同时运行查询,请检查是否值得改进 工作负载管理 设置以创建具有不同内存设置的单独队列。

    最后,如果性能仍然存在问题,请添加额外的 Redshift 节点。 密集计算节点将提供更好的性能,因为它们使用 SSD 存储,但每 TB 存储的成本更高。

    【讨论】:

    • 我知道有一些方法可以提高 Redshift 的查询性能。如果我想使用 Spark 处理我的 Redshift 数据,应该推荐什么架构?我是否需要将数据卸载到 S3 中,然后在其上使用 spark?
    • 是的,如果您想使用 Spark 分析数据,您需要将数据加载到 Spark 中。这可以通过 JDBC 连接或来自 Amazon S3。 Spark 在运行查询时不一定比 Redshift 更高效,因此请先尝试通过手动将数据加载到 Spark 中并比较结果来进行一些测试。
    猜你喜欢
    • 1970-01-01
    • 2016-07-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-08-03
    • 2016-11-20
    • 1970-01-01
    • 2018-11-20
    相关资源
    最近更新 更多