我有一个Glue表,其中有成千上万个具有以下分区键的分区:
"PartitionKeys": [
{
"Name": "thing",
"Type": "string"
},
{
"Name": "year",
"Type": "string"
},
{
"Name": "date",
"Type": "string"
}
]
S3中的每个分区位置都有168个大小各异的文件(每天每小时7个实木复合地板文件)。
在较大的雅典娜查询中,我得到了错误
Service: Amazon S3; Status Code: 503; Error Code: 503 Slow Down
当我查看有关S3 Get请求的详细指标时,我可以看到存储桶中GET和HEAD请求的大峰值。
我目前正在使用一个S3存储桶来存储数据
我可以将我的实木复合地板文件存储在多个存储桶中,并更新Glue表分区以使用多个存储桶中的位置,以便将Athena查询分散到更多存储桶中。
类似的东西(在boto3中):
import boto3
glue = boto3.client('glue')
glue.batch_create_partition(
DatabaseName='myDatabase',
TableName='myTable',
PartitionInputList=[
{
"Values": [
"thing-1",
"2020",
"2020-01-24"
],
"StorageDescriptor": {
# Note S3 bucket
"Location": "s3://my-data-bucket-1/thing=thing-1/year=2020/date=2020-01-24",
# Ignoring other requred items in StorageDescriptor
}
},
{
"Values": [
"thing-2", # Different thing
"2020",
"2020-01-24"
],
"StorageDescriptor": {
# Different S3 bucket
"Location": "s3://my-other-data-bucket-2/thing=thing-2/year=2020/date=2020-01-24",
# Ignoring other requred items in StorageDescriptor
}
}
# Ignoring other required items in PartitionInputList
]
)