таблица в афинах не обновляется с логами vpc - PullRequest
0 голосов
/ 03 января 2019

У меня есть журнал потока 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 Ответ

0 голосов
/ 04 января 2019

Причиной, по которой ваша таблица не извлекает какие-либо записи, является структура каталога s3, которой вы следуете. Поскольку ваша таблица разбита на разделы, и если вы хотите, чтобы Athena автоматически обнаружила разделы, то структура каталога s3 должна выглядеть следующим образом:

s3://AWSLogs/.../.../.../year=2018/month=01/day=01/

Если в s3 имеется указанная выше структура пары «ключ-значение», то после создания таблицы можно автоматически добавлять разделы, используя следующий запрос:

msck repair table vpc_flow_logs

Если у вас нет контроля над структурой каталогов, обратитесь к разделу « Разделение ваших данных в Афине для повышения производительности запросов и снижения затрат » в этой ссылке , в которой объясняется, как добавляйте разделы, если у вас нет структуры каталогов в стиле улья.

Еще один более простой, но недорогой способ - запустить сканер 1014 *, который автоматически создаст таблицу и разделы, даже если у вас есть структура каталогов ниже уровня. Все, что вам нужно сделать, это передать "s3: // AWSLogs / accountId / vpcflowlogs / region / "вашему сканеру в качестве входных данных.

s3://.../.../.../.../year/month/day/
...