Consulta del formato de archivo de registro extendido de W3C
El formato de datos de archivo de registro extendido de W3Cdate,
time
, c-ip
, s-ip
, cs-method
, cs-uri-stem
, sc-status
, sc-bytes
, cs-bytes
, time-taken
y cs-version
.
2020-01-19 22:48:39 203.0.113.5 198.51.100.2 GET /default.html 200 540 524 157 HTTP/1.0 2020-01-19 22:49:40 203.0.113.10 198.51.100.12 GET /index.html 200 420 324 164 HTTP/1.0 2020-01-19 22:50:12 203.0.113.12 198.51.100.4 GET /image.gif 200 324 320 358 HTTP/1.0 2020-01-19 22:51:44 203.0.113.15 198.51.100.16 GET /faq.html 200 330 324 288 HTTP/1.0
Creación de una tabla en Athena para los registros extendidos de W3C
Antes de poder consultar los registros extendidos de W3C, debe crear un esquema de tabla de modo que Athena pueda leer los datos de registro.
Para crear una tabla en Athena para registros extendidos de W3C
Abra la consola de Athena en https://console.aws.amazon.com/athena/
. -
Pegue una instrucción DDL como la siguiente en la consola de Athena, teniendo en cuenta los puntos a continuación:
-
Agregue o elimine las columnas del ejemplo para que se correspondan con los campos de los registros que desea consultar.
-
Los nombres de columna en el formato de archivo de registro extendido de W3C contienen guiones (
-
). Sin embargo, de acuerdo con las convenciones de nomenclatura de Athena, la instrucciónCREATE TABLE
de ejemplo los reemplaza con guiones bajos (_
). -
Para especificar el delimitador de espacio, utilice
FIELDS TERMINATED BY ' '
. -
Modifique los valores de
LOCATION 's3://amzn-s3-demo-bucket/
para que apunten a los registros extendidos de W3C en Amazon S3.w3c-log-folder
/'
CREATE EXTERNAL TABLE `iis_w3c_logs`( date_col string, time_col string, c_ip string, s_ip string, cs_method string, cs_uri_stem string, sc_status string, sc_bytes string, cs_bytes string, time_taken string, cs_version string ) ROW FORMAT DELIMITED FIELDS TERMINATED BY ' ' STORED AS INPUTFORMAT 'org.apache.hadoop.mapred.TextInputFormat' OUTPUTFORMAT 'org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat' LOCATION 's3://amzn-s3-demo-bucket/
w3c-log-folder
/' -
-
Ejecute la consulta en la consola de Athena para registrar la tabla
iis_w3c_logs
. Cuando se complete la consulta, los registros estarán listos para su consulta desde Athena.
Ejemplo de consulta Select de registro extendido de W3C
En la siguiente consulta de ejemplo se selecciona la fecha, la hora, el destino de la solicitud y el tiempo que demora la solicitud de la tabla iis_w3c_logs
. La cláusula WHERE
filtra los casos en los que el método HTTP es GET
y el código de estado HTTP es 200
(satisfactorio).
SELECT date_col, time_col, cs_uri_stem, time_taken FROM iis_w3c_logs WHERE cs_method = 'GET' AND sc_status = '200'
En la siguiente imagen se muestran los resultados de la consulta en el Editor de consultas de Athena.
Combinación de los campos de fecha y hora
Los campos delimitados por espacios date
y time
son entradas separadas en los datos de origen del registro, pero puede combinarlas en una marca temporal, si lo desea. Utilice las funciones concat()derived_timestamp
.
CREATE TABLE iis_w3c_logs_w_timestamp AS SELECT date_parse(concat(date_col,' ', time_col),'%Y-%m-%d %H:%i:%s') as derived_timestamp, c_ip, s_ip, cs_method, cs_uri_stem, sc_status, sc_bytes, cs_bytes, time_taken, cs_version FROM iis_w3c_logs
Una vez creada la tabla, puede consultar la nueva columna de marca temporal directamente, como en el siguiente ejemplo.
SELECT derived_timestamp, cs_uri_stem, time_taken FROM iis_w3c_logs_w_timestamp WHERE cs_method = 'GET' AND sc_status = '200'
En la siguiente imagen, se muestran los resultados de la consulta.