使用Amazon Athena访问Columnar URL INDEX遇S3 SlowDown错误的解决方法
这个SlowDown(503状态码)错误是Amazon S3的限流机制触发导致的。Athena执行查询时会并发读取S3上的Parquet分片文件,Common Crawl作为公共数据集,S3对其访问的请求速率有默认限制,当你的查询发起的并发请求数超过这个限制时,就会返回该错误,要求降低请求速率。
- 降低Athena并发度:在Athena控制台的“查询设置”中,调低
max_parallelism参数,减少同时读取S3文件的线程数,从而降低请求速率。 - 缩小查询范围:如果业务需求允许,进一步添加过滤条件(比如限制特定时间段的爬取数据),或者缩小爬取周期范围,减少需要扫描的S3分片数量。
- 重试查询:S3的限流通常是临时的,尤其是在高峰时段更容易触发,换非高峰时段重试,或者直接重试几次,大概率可以成功执行。
- 利用分区优化扫描:你的查询已经用到了
crawl和subset分区,这很好,但可以确认是否有其他分区字段(比如url_host_tld是否是分区字段),如果是,确保查询条件正确利用分区来减少扫描的数据量。 - 开启查询缓存:在Athena中开启查询结果缓存,后续执行相同或类似查询时,直接读取缓存结果,无需重复访问S3。
原查询代码
SELECT COUNT(*) AS count, url_host_registered_domain FROM "ccindex"."ccindex" WHERE crawl = 'CC-MAIN-2018-05' AND subset = 'warc' AND url_host_tld = 'no' GROUP BY url_host_registered_domain HAVING (COUNT(*) >= 100) ORDER BY count DESC
原错误信息
Error opening Hive split s3://commoncrawl/cc-index/table/cc-main/warc/crawl=CC-MAIN-2018-05/subset=warc/part-00082-248eba37-08f7-4a53-a4b4-d990640e4be4.c000.gz.parquet (offset=0, length=33554432): com.amazonaws.services.s3.model.AmazonS3Exception: Please reduce your request rate. (Service: Amazon S3; Status Code: 503; Error Code: SlowDown; Request ID: ZSRS4FD2ZTNJY9PV; S3 Extended Request ID: IvDfkWdbDYXjjOPhmXSQD3iVkBiE2Kl1/K3xaFc1JulOhCIcDbWUhnbww7juthZIUm2hZ9ICiwg=; Proxy: null), S3 Extended Request ID: IvDfkWdbDYXjjOPhmXSQD3iVkBiE2Kl1/K3xaFc1JulOhCIcDbWUhnbww7juthZIUm2hZ9ICiwg=
内容的提问来源于stack exchange,提问作者Gladiator

