适用于存储在多个存储桶中的数据的AWS Glue表分区

时间:2020-01-24 20:14:53

标签: amazon-web-services amazon-s3 aws-glue amazon-athena

我有一个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
    ]
)

0 个答案:

没有答案