Таблица в афинах не обновляется с логами vpc
У меня есть журнал потока VPC, назначение которого для него - S3, с S3 bucket = vpc_logs. в этом сегменте записи vpc загружаются в папку AWSLogs/accountId/vpcflowlogs/region/year/month/day/log_file_name.log.gz. Я хочу иметь возможность просматривать записи с Афиной, как это предлагается в AWS, но предлагается следующий запрос:
CREATE EXTERNAL TABLE IF NOT EXISTS vpc_flow_logs (
version int,
account string,
interfaceid string,
sourceaddress string,
destinationaddress string,
sourceport int,
destinationport int,
protocol int,
numpackets int,
numbytes bigint,
starttime int,
endtime int,
action string,
logstatus string
)
PARTITIONED BY (dt string)
ROW FORMAT DELIMITED
FIELDS TERMINATED BY ' '
LOCATION 's3://bucket_name/AWSLogs/account_id/vpcflowlogs/region/'
TBLPROPERTIES ("skip.header.line.count"="1");
затем, когда я хочу просмотреть свою запись, я получаю 0 записей. Я считаю, что информация, расположенная под папками.. это правильный запрос для запуска?
1 ответ
Причиной, по которой ваша таблица не извлекает какие-либо записи, является структура каталога s3, которой вы следуете. Поскольку ваша таблица разбита на разделы, и если вы хотите, чтобы Athena автоматически обнаружила разделы, то структура каталога s3 должна выглядеть следующим образом:
s3://AWSLogs/.../.../.../year=2018/month=01/day=01/
Если у вас есть структура пар ключей-значений выше в s3, то после создания таблицы разделы могут быть автоматически добавлены с помощью запроса ниже:
msck repair table vpc_flow_logs
Если у вас нет контроля над структурой каталогов, обратитесь к разделу " Разделение ваших данных в Афине для повышения производительности запросов и снижения затрат " в этой ссылке, в котором объясняется, как добавлять разделы, если у вас нет структуры каталогов с разделением в стиле улья.
Еще один более простой, но не дорогой способ - запустить сканер, который автоматически создаст таблицу и разделы, даже если у вас есть структура каталогов ниже уровня. Все, что вам нужно сделать, это передать " s3://AWSLogs/accountId/vpcflowlogs/region/" вашему сканеру в качестве ввода.
s3://.../.../.../.../year/month/day/