glue_context = GlueContext(SparkContext.getOrCreate())
job = Job(glue_context)
job.init(args['JOB_NAME'], args)
timeout = args['Timeout'] # 通过参数传入超时时间
# 设置超时时限
job.set_job_completion_timeout(int(timeout))
# 减少加载数据量
df = glue_context.create_dynamic_frame.from_catalog(
database=args['DATABASE'],
table_name=args['TABLE_NAME'],
push_down_predicate=args['FILTER'],
transformation_ctx=args['TRANSFORMATION_CONTEXT']
)
在连接Redshift集群时,需要设置空闲超时时间,以防止连接空闲时间过长而导致连接被关闭,可以在Redshift集群配置中进行修改。
import psycopg2
conn = psycopg2.connect(database="myredshift", user="myuser", password="mypassword", port=5439, host="myredshift.abc123.us-west-2.redshift.amazonaws.com", connect_timeout=10, options="-c statement_timeout=120000") # 在这里设置statement_timeout参数
可以通过以下方法进行优化: