我想自动执行每天要运行的redshift插入查询。
我们实际上使用Aws环境。有人告诉我使用lambda是不正确的方法。这是在Redshift中自动执行查询的最佳ETL过程。
答案 0 :(得分:3)
要在Redshift上自动执行SQL,您至少要有3个选择
简单-cron 使用EC2实例并在该实例上设置cron作业以运行您的SQL代码。
psql -U youruser -p 5439 -h hostname_of_redshift -f your_sql_file
功能丰富-气流(推荐) 如果您要执行复杂的计划,那么值得花时间学习和使用apache气流。这也需要在服务器(ec2)上运行,但是提供了很多功能。
无AWS的AWS-AWS数据管道(不推荐)
https://aws.amazon.com/datapipeline/
Cloudwatch-> Lambda-> EC2方法,下面由John Rotenstein描述 当您想以AWS为中心时,这是一个好方法,它将比拥有专用的EC2实例便宜。
答案 1 :(得分:1)
一个选项:
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)
。Terminate
来关闭并终止实例EC2实例仅按每秒计费。
答案 2 :(得分:0)
您可以使用boto3和psycopg2通过创建python脚本来运行查询 并安排在cron中以每天执行。
您还可以尝试将查询转换为Spark作业,并安排这些作业每天在AWS Glue中运行。如果发现困难,也可以研究Spark SQL并尝试一下。如果要使用Spark SQL,请记住内存使用情况,因为Spark SQL占用大量内存。
答案 3 :(得分:0)