AWS:在 redshift 中自动化查询
AWS: Automating queries in redshift
我想每天 运行 自动执行 redshift 插入查询。
我们实际使用的是Aws环境。有人告诉我使用 lambda 不是正确的方法。哪个是在 Redshift 中自动执行查询的最佳 ETL 过程。
要在 Redshift 上实现自动化 SQL,您有 3 个选项(至少)
简单 - cron
使用 EC2 实例并在其上设置一个 cron 作业以 运行 您的 SQL 代码。
psql -U youruser -p 5439 -h hostname_of_redshift -f your_sql_file
功能丰富 - Airflow(推荐)
如果你有一个复杂的时间表 运行 那么值得花时间学习和使用 apache airflow。这也需要 运行 在服务器 (ec2) 上,但提供了很多功能。
AWS 无服务器 - AWS 数据管道(不推荐)
https://aws.amazon.com/datapipeline/
Cloudwatch->Lambda->EC2 方法由 John Rotenstein 在下面描述
当您想以 AWS 为中心时,这是一个很好的方法,它比拥有专用的 EC2 实例更便宜。
一个选项:
- 按计划使用 Amazon CloudWatch Events 触发 AWS Lambda 函数
- Lambda 函数 使用用户数据脚本启动 EC2 实例。将 关机行为 配置为
Terminate
。
- EC2实例执行用户数据脚本
- 脚本完成后,它应该调用
sudo shutdown now -h
以 关闭并终止 实例
EC2 实例仅按每秒计费。
您可以使用 boto3 和 psycopg2 通过创建 python 脚本来 运行 查询
并在 cron 中安排它每天执行。
您还可以尝试将查询转换为 Spark 作业,并每天将这些作业安排到 AWS Glue 中的 运行。如果你觉得难,你也可以看看 Spark SQL 并试一试。如果您要使用 Spark SQL,请记住内存使用情况,因为 Spark SQL 非常占用内存。
Redshift 现在原生支持计划查询:https://docs.aws.amazon.com/redshift/latest/mgmt/query-editor-schedule-query.html
我想每天 运行 自动执行 redshift 插入查询。
我们实际使用的是Aws环境。有人告诉我使用 lambda 不是正确的方法。哪个是在 Redshift 中自动执行查询的最佳 ETL 过程。
要在 Redshift 上实现自动化 SQL,您有 3 个选项(至少)
简单 - cron 使用 EC2 实例并在其上设置一个 cron 作业以 运行 您的 SQL 代码。
psql -U youruser -p 5439 -h hostname_of_redshift -f your_sql_file
功能丰富 - Airflow(推荐) 如果你有一个复杂的时间表 运行 那么值得花时间学习和使用 apache airflow。这也需要 运行 在服务器 (ec2) 上,但提供了很多功能。
AWS 无服务器 - AWS 数据管道(不推荐)
https://aws.amazon.com/datapipeline/
Cloudwatch->Lambda->EC2 方法由 John Rotenstein 在下面描述 当您想以 AWS 为中心时,这是一个很好的方法,它比拥有专用的 EC2 实例更便宜。
一个选项:
- 按计划使用 Amazon CloudWatch Events 触发 AWS Lambda 函数
- Lambda 函数 使用用户数据脚本启动 EC2 实例。将 关机行为 配置为
Terminate
。 - EC2实例执行用户数据脚本
- 脚本完成后,它应该调用
sudo shutdown now -h
以 关闭并终止 实例
EC2 实例仅按每秒计费。
您可以使用 boto3 和 psycopg2 通过创建 python 脚本来 运行 查询 并在 cron 中安排它每天执行。
您还可以尝试将查询转换为 Spark 作业,并每天将这些作业安排到 AWS Glue 中的 运行。如果你觉得难,你也可以看看 Spark SQL 并试一试。如果您要使用 Spark SQL,请记住内存使用情况,因为 Spark SQL 非常占用内存。
Redshift 现在原生支持计划查询:https://docs.aws.amazon.com/redshift/latest/mgmt/query-editor-schedule-query.html