将数据从 AWS Redshift 导入到 BI Tool 的最快方法

Posted

技术标签:

【中文标题】将数据从 AWS Redshift 导入到 BI Tool 的最快方法【英文标题】:Fastest way to Import Data from AWS Redshift to BI Tool 【发布时间】:2021-10-20 22:00:14 【问题描述】:

我在 AWS redshift 中有一个运行 ra3.xlplus 的表,它有 2 个节点,有 1500 万行。我正在办公室检索本地数据。我正在尝试将该数据加载到 BI 工具中的内存中。使用 JDBC 连接导入该数据需要很长时间(12 分钟)。还尝试了 ODBC 连接得到了相同的结果。我尝试在 AWS 上启动具有 25 Gb 连接的 EC2,但得到了相同的结果。

为了比较,以 CSV 格式加载该数据大约需要 90 秒。

有什么解决方案可以加快数据传输速度。

【问题讨论】:

您正在尝试将 1500 万行从云端检索到本地?这将是带宽限制的组合,加上从数据库中检索那么多行的协议。我假设您的 CSV 测试来自本地存储的文件,所以没有涉及 Internet?您的互联网带宽是多少? 我尝试了两种方式,云到 OnPrem 和云到 EC2 实例。在这两个地方都有大约 59 - 70 mbps 的下载速度。是的 csv 在公司网络驱动器上,所以它在 Intranet 上。 【参考方案1】:

有一些方法可以改善这一点,但需要确定真正的限制因素。瓶颈可能是 AWS 和您的本地系统之间的网络带宽。当您从云端下载大量数据时,您需要一个高效的传输流程。

如您所见,JDBC 和 ODBC 的网络效率不高。有助于移动数据的第一件事是压缩。第二种是并行传输,因为 TCP 协议中有大量的握手,并且可用带宽比一个连接可以消耗的要多。所以我过去的做法是将压缩的数据卸载到 S3,然后将文件从 S3 并行复制到本地机器,通过解压缩和保存文件来管道传输文件。最后将这些文件加载​​到您的 BI 工具中。

显然,设置它需要一些时间,因此您要确保该过程将被用于证明这项工作的合理性。另一种方法是通过将您的 BI 工具定位在 ec2 实例中,使其更接近 Redshift。更短的网络距离和更高的带宽应该会显着降低传输时间。将数据库定位在云端的一个缺点是它位于云端而不是本地。

【讨论】:

感谢您提供 S3 解决方案。我确实在 AWS 的同一区域创建了一个 EC2 实例。安装了 BI 工具,在本例中是 Tibco Spotfire 并尝试导入数据。它花费了与本地相同的时间。我认为瓶颈是否在 RedShift 方面?我监控了 EC2 和 On-Prem 上的网络速度,下载速度约为 59 - 70 mbps。 我明白了,ec2 连接到 RS,而不是您的 BI 系统。那么如果将输出发送到表中,查询需要多长时间?我们是在谈论需要 12 分钟的查询吗?如果查询快到表,那么卸载到 S3 呢?如果事情对 S3 来说很快,那么同样的问题也存在 - JDBC 对数据、未压缩数据和单一数据连接效率不高。

以上是关于将数据从 AWS Redshift 导入到 BI Tool 的最快方法的主要内容,如果未能解决你的问题,请参考以下文章

使用 SQL Workbench 将 csv 文件导入 AWS Redshift 数据库

使用 NodeJS 将 RabbitMQ 导入 AWS Redshift

如何使用 aws unload 命令将数据从 AWS Redshift 卸载到 s3?

将数据从本地迁移到 AWS redshift

AWS:每小时将数据从 DynamoDB 同步到 Redshift

将有效负载数据从 dynamodb 复制到 redshift