AWS Glue读取Redshift大数据的性能问题及并行读取优化咨询
关于AWS Glue从Redshift并行读取数据的问题
初始问题
我正尝试通过AWS Glue作业执行查询从Redshift表读取数据。当前读取数据时生成的DataFrame仅含1个分区,读取耗时极长(读取操作基于包含多表关联的复杂查询)。
使用的代码如下:
df = spark.read \ .format("jdbc") \ .option("url", url) \ .option("query", query) \ .option("numPartitions", 10) \ .option("fetchsize", "10000") \ .option("batchsize", "10000") \ .load()
我已设置numPartitions为10,但仍以单分区读取全部数据,不清楚该参数未生效的原因。恳请帮助分析numPartitions无效的原因,以及如何实现从Redshift读取数据的并行化以提升JDBC读取性能。另外,通过spark.read.jdbc()传入复杂查询是否为读取Redshift数据的最佳方式?
更新内容
我尝试了相关建议,但仍无任何改善。作业始终仅运行2个执行器(1个用于驱动节点,1个用于工作节点)。如何提升读取并行度?我尝试了以下配置但未获改善,希望实现10-20个执行器的读取并行,恳请提供建议。
使用的代码如下:
DF_options = { "connectionName": connection, "url": url, "sampleQuery": query, "user": user, "password": pwd, "redshiftTmpDir": "s3://bucket/temp/", "hashfield": "location", "hashexpression": "id", "hashpartitions": "5" } DF = glueContext.create_dynamic_frame_from_options( connection_type="redshift", connection_options=DF_options, transformation_ctx="DF" )
内容的提问来源于stack exchange,提问作者Bab
相关产品推荐
相关产品推荐

