每小时 Amazon Redshift table 到 S3 中的外部 table
Amazon Redshift table to external table in S3 every hour
我想将数据从 Amazon Redshift table 导出到存储在 Amazon S3 中的外部 table。每小时,我想将行从 Redshift 源导出到外部 table 目标。
AWS 中有哪些选项可以实现这一目标?
我知道 UNLOAD
命令允许我将数据导出到 S3,但我认为将数据存储到外部 table(也已分区)是行不通的).还是 Amazon EMR 可能是实现此功能的唯一方法?
Amazon Redshift Spectrum 外部 table 是只读的。您不能从 Redshift 更新它们(例如通过 INSERT 命令)。
因此,您需要一种直接在 S3 中创建文件的方法。
UNLOAD
当然可以做到这一点,但它不能将数据保存在分区结构中。
Amazon EMR 确实是一个不错的选择。现在它是按秒收费的,所以它只需要 运行 足够长的时间来导出数据。您可以使用您喜欢的工具(例如 Hive 或 Spark)从 Redshift 导出数据,然后将其写入分区外部 table.
例如,参见:Powering Amazon Redshift Analytics with Apache Spark and Amazon Machine Learning | AWS Big Data Blog
另一种选择可能 是 AWS Glue。我不太熟悉它,但它可以输出到分区,所以这可能是一个更容易实现你的目标的方法!
参见:Managing Partitions for ETL Output in AWS Glue - AWS Glue
现在可以插入外部 tsble 了,我认为是从 2020 年 6 月开始:
https://aws.amazon.com/about-aws/whats-new/2020/06/amazon-redshift-now-supports-writing-to-external-tables-in-amazon-s3/
这是文档:
https://docs.aws.amazon.com/redshift/latest/dg/r_INSERT_external_table.html
基本上有两种方法:
- 插入 external_schema.table_name { select_statement }
或者
- 创建外部 TABLE 为 { SELECT }
通常您在您的 redshift 外部模式(例如 my_stg)中指定 glu 数据库名称,因此您在 redshift 外部模式中创建的任何外部 table 已经知道胶目录数据库名称。
这是个好消息,因为操作问题来自 2018
我想将数据从 Amazon Redshift table 导出到存储在 Amazon S3 中的外部 table。每小时,我想将行从 Redshift 源导出到外部 table 目标。
AWS 中有哪些选项可以实现这一目标?
我知道 UNLOAD
命令允许我将数据导出到 S3,但我认为将数据存储到外部 table(也已分区)是行不通的).还是 Amazon EMR 可能是实现此功能的唯一方法?
Amazon Redshift Spectrum 外部 table 是只读的。您不能从 Redshift 更新它们(例如通过 INSERT 命令)。
因此,您需要一种直接在 S3 中创建文件的方法。
UNLOAD
当然可以做到这一点,但它不能将数据保存在分区结构中。
Amazon EMR 确实是一个不错的选择。现在它是按秒收费的,所以它只需要 运行 足够长的时间来导出数据。您可以使用您喜欢的工具(例如 Hive 或 Spark)从 Redshift 导出数据,然后将其写入分区外部 table.
例如,参见:Powering Amazon Redshift Analytics with Apache Spark and Amazon Machine Learning | AWS Big Data Blog
另一种选择可能 是 AWS Glue。我不太熟悉它,但它可以输出到分区,所以这可能是一个更容易实现你的目标的方法!
参见:Managing Partitions for ETL Output in AWS Glue - AWS Glue
现在可以插入外部 tsble 了,我认为是从 2020 年 6 月开始: https://aws.amazon.com/about-aws/whats-new/2020/06/amazon-redshift-now-supports-writing-to-external-tables-in-amazon-s3/
这是文档: https://docs.aws.amazon.com/redshift/latest/dg/r_INSERT_external_table.html
基本上有两种方法:
- 插入 external_schema.table_name { select_statement } 或者
- 创建外部 TABLE 为 { SELECT }
通常您在您的 redshift 外部模式(例如 my_stg)中指定 glu 数据库名称,因此您在 redshift 外部模式中创建的任何外部 table 已经知道胶目录数据库名称。 这是个好消息,因为操作问题来自 2018