У меня есть таблица Glue с 10 тысячами разделов со следующими ключами разделов:
"PartitionKeys": [
{
"Name": "thing",
"Type": "string"
},
{
"Name": "year",
"Type": "string"
},
{
"Name": "date",
"Type": "string"
}
]
В каждом разделе разделов в S3 есть 168 файлов разных размеров (7 файлов паркета в час в день) .
При больших запросах Athena я получаю сообщение об ошибке
Service: Amazon S3; Status Code: 503; Error Code: 503 Slow Down
Когда я просматриваю подробные метрики на S3 Get Requests, я вижу большие всплески в запросах 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
]
)