[英]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 不支持的数据类型)?
Redshift Spectrum 几乎支持与 Redshift 本身相同的数据类型。
Redshift Spectrum 在幕后创建计算节点集群。 集群的大小基于实际 Redshift 集群节点的数量,因此如果您计划创建 1 个节点的 Redshift 集群,Spectrum 的运行速度将非常缓慢。
正如您在评论中指出的那样,您可以使用 Athena 查询数据,在您的情况下,它是更好的选择,而不是 Spectrum。 但是 Athena 有几个限制,例如 30 分钟的运行时间、内存消耗等。因此,如果您计划使用多个连接进行复杂的查询,它就无法工作。
Redshift Spectrum 无法在没有提供结构的情况下创建外部表。
在您的情况下,最佳解决方案是使用 Spark(在 EMR 或 Glue 上)转换数据,使用 Athena 进行查询,如果 Athena 无法执行特定查询 - 在相同数据上使用 SparkSQL。 您可以使用 Glue,但在 Spot 实例上的 EMR 上运行作业将更加灵活且成本更低。 EMR 集群附带 EMRFS,这使您能够几乎透明地使用 S3 而不是 HDFS。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.