繁体   English   中英

将数据从 PostgreSQL 移动到 AWS S3 并使用 RedShift Spectrum 进行分析

[英]Move data from PostgreSQL to AWS S3 and analyze with RedShift Spectrum

我有大量具有不同模式的 PostgreSQL 表以及其中的大量数据。

我现在无法进行数据分析,因为数据量非常大 - 几 TB 的数据和 PostgreSQL 无法在合理的时间内处理查询。

我正在考虑以下方法 - 我将使用 Apache Spark 处理我所有的 PostgreSQL 表,加载数据帧并将它们作为 Parquet 文件存储在 AWS S3 中。 然后我将使用 RedShift Spectrum 来查询存储在这些 PARQUET 文件中的信息。

首先,我想问 - 这个解决方案是否有效?

第二个 - RedShift Spectrum 是否能够从这些 Parquet 文件自动创建 EXTERNAL 表而无需额外的架构规范(即使原始 PostgreSQL 表包含 AWS RedShift 不支持的数据类型)?

  1. Redshift Spectrum 几乎支持与 Redshift 本身相同的数据类型。

  2. Redshift Spectrum 在幕后创建计算节点集群。 集群的大小基于实际 Redshift 集群节点的数量,因此如果您计划创建 1 个节点的 Redshift 集群,Spectrum 的运行速度将非常缓慢。

  3. 正如您在评论中指出的那样,您可以使用 Athena 查询数据,在您的情况下,它是更好的选择,而不是 Spectrum。 但是 Athena 有几个限制,例如 30 分钟的运行时间、内存消耗等。因此,如果您计划使用多个连接进行复杂的查询,它就无法工作。

  4. Redshift Spectrum 无法在没有提供结构的情况下创建外部表。

  5. 在您的情况下,最佳解决方案是使用 Spark(在 EMR 或 Glue 上)转换数据,使用 Athena 进行查询,如果 Athena 无法执行特定查询 - 在相同数据上使用 SparkSQL。 您可以使用 Glue,但在 Spot 实例上的 EMR 上运行作业将更加灵活且成本更低。 EMR 集群附带 EMRFS,这使您能够几乎透明地使用 S3 而不是 HDFS。

AWS Glue作为您的一个选项可能会很有趣。 它既是 Spark 的托管版本,带有一些 AWS 特定插件和数据爬虫 + 数据目录。

它可以抓取 Parquet 文件等非结构化数据并找出结构。 然后,您可以在需要时以结构化形式将其导出到 AWS RedShift。

请参阅此博客文章,了解如何使用 JDBC 将其连接到 postgres 数据库以将数据从 Postgres 移动到 S3。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM