AWS:在redshift中自动执行查询

时间:2018-09-13 03:22:51

标签: amazon-web-services automation amazon-redshift etl

我想自动执行每天要运行的redshift插入查询。

我们实际上使用Aws环境。有人告诉我使用lambda是不正确的方法。这是在Redshift中自动执行查询的最佳ETL过程。

4 个答案:

答案 0 :(得分:3)

要在Redshift上自动执行SQL,您至少要有3个选择

简单-cron 使用EC2实例并在该实例上设置cron作业以运行您的SQL代码。

psql -U youruser -p 5439 -h hostname_of_redshift -f your_sql_file

功能丰富-气流(推荐) 如果您要执行复杂的计划,那么值得花时间学习和使用apache气流。这也需要在服务器(ec2)上运行,但是提供了很多功能。

https://airflow.apache.org/

无AWS的AWS-AWS数据管道(不推荐)

https://aws.amazon.com/datapipeline/

Cloudwatch-> Lambda-> EC2方法,下面由John Rotenstein描述 当您想以AWS为中心时,这是一个好方法,它将比拥有专用的EC2实例便宜。

答案 1 :(得分:1)

一个选项:

  • 按计划使用 Amazon CloudWatch Events 触发AWS Lambda函数
  • Lambda函数使用用户数据脚本启动EC2实例。将关机行为配置为default_args = { 'owner': 'airflow', 'depends_on_past': False, 'start_date': datetime(2012,1,1), 'end_date': datetime(2018,1,1), 'email': ['sef12@gmail.com'], 'email_on_failure': True, 'email_on_retry': False, 'retries': 1, 'retry_delay': timedelta(seconds=5) } dag = DAG( dag_id='SAMPLE_LOAD',schedule_interval= '@yearly',default_args=default_args,catchup=True,max_active_runs=1, concurrency=1)
  • EC2实例执行用户数据脚本
  • 脚本完成后,应调用Terminate关闭并终止实例

EC2实例仅按每秒计费。

答案 2 :(得分:0)

您可以使用boto3和psycopg2通过创建python脚本来运行查询 并安排在cron中以每天执行。

您还可以尝试将查询转换为Spark作业,并安排这些作业每天在AWS Glue中运行。如果发现困难,也可以研究Spark SQL并尝试一下。如果要使用Spark SQL,请记住内存使用情况,因为Spark SQL占用大量内存。

答案 3 :(得分:0)