Amazon Athena RegexSerDe를 사용하여 ALB 로그 탐색(2018년 8월 버전)

3674 단어 AthenaAWS

이것은 기사의 전재


  • 전재의 이유는 내가 이 문제로 빠져 구그라고 3시간 정도 시간이 걸렸기 때문에, 가능한 한 다른 사람에게 시간을 걸려 싶지 않기 때문입니다.
  • 이 기사 덕분에 살아났습니다. 감사

  • 원본 원본 기사


  • Amazon Athena RegexSerDe를 사용하여 ALB 로그 탐색(2018년 8월 버전)

  • 빠진 것


  • ALB 액세스 로그를 출력하고 Athena로 구문 분석하려고하면 가져 오기가 잘못됩니다.

    AWS 문서에서도 쓸모없는 가져오기 쿼리


  • athena 다큐
  • CREATE EXTERNAL TABLE IF NOT EXISTS alb_logs (  
    type string,  
    time string,  
    elb string,  
    client_ip string,  
    client_port int,  
    target_ip string,  
    target_port int,  
    request_processing_time double,  
    target_processing_time double,  
    response_processing_time double,  
    elb_status_code string,  
    target_status_code string,  
    received_bytes bigint,  
    sent_bytes bigint,  
    request_verb string,  
    request_url string,  
    request_proto string, 
    user_agent string,  
    ssl_cipher string,  
    ssl_protocol string,  
    target_group_arn string,  
    trace_id string,  
    domain_name string,  
    chosen_cert_arn string, 
    matched_rule_priority string,  
    request_creation_time string, 
    actions_executed string
     )
    ROW FORMAT SERDE 'org.apache.hadoop.hive.serde2.RegexSerDe'
    WITH SERDEPROPERTIES (
    'serialization.format' = '1',
    'input.regex' =
    '([^ ]*) ([^ ]*) ([^ ]*) ([^ ]*):([0-9]*) ([^ ]*)[:-]([0-9]*) ([-.0-9]*) ([-.0-9]*) ([-.0-9]*) (|[-0-9]*) (-|[-0-9]*) ([-0-9]*) ([-0-9]*) \"([^ ]*) ([^ ]*) (- |[^ ]*)\" \"([^\"]*)\" ([A-Z0-9-]+) ([A-Za-z0-9.-]*) ([^ ]*) \"([^\"]*)\" \"([^\"]*)\" \"([^\"]*)\" ([-.0-9]*) ([^ ]*) \"([^\"]*)\"' ) 
    LOCATION 's3://your-alb-logs-directory/AWSLogs/elasticloadbalancing/region';
    

    가져오기 결과





    잘 작동하는 원본 원본 기사에있는 잘 생긴 가져 오기 쿼리


    CREATE EXTERNAL TABLE IF NOT EXISTS alb_logs (
    type string,
    request_timestamp string,
    elb_name string,
    client_addrport string,
    client_ip string,
    client_port int,
    target_addrport string,
    target_ip string,
    target_port int,
    request_processing_time decimal(8,6),
    target_processing_time decimal(8,6),
    response_processing_time decimal(8,6),
    elb_status_code string,
    target_status_code string,
    received_bytes int,
    sent_bytes int,
    request string,
    user_agent string,
    ssl_cipher string,
    ssl_protocol string,
    target_group_arn string,
    trace_id string,
    domain_name string, 
    chosen_cert_arn string, 
    matched_rule_priority string, 
    request_creation_time string, 
    actions_executed string, 
    redirect_url string)
    ROW FORMAT SERDE 'org.apache.hadoop.hive.serde2.RegexSerDe'
    WITH SERDEPROPERTIES (
      'serialization.format' = '1',
      'input.regex'='([^ ]*) ([^ ]*) ([^ ]*) (([^ ]*):([^ ]*)|-) (([^ ]*):([^ ]*)|-) ([^ ]*) ([^ ]*) ([^ ]*) ([^ ]*) ([^ ]*) ([^ ]*) ([^ ]*) \"([^\\\"]*)\" \"([^\\\"]*)\" ([^ ]*) ([^ ]*) ([^ ]*) \"([^\\\"]*)[ ]*\" \"([^ ]*)\" \"([^ ]*)\" ([^ ]*) ([^ ]*) \"([^ ]*)\" \"([^\\\"]*)\".*$'
    ) 
    LOCATION 's3://devio2018-handson/07-alblogs/2018/08/13/'
    TBLPROPERTIES ('has_encrypted_data'='false');
    

    가져오기 결과



    - 스쿠쇼 붙일 수 없지만 잘 작동했습니다.

    좋은 웹페이지 즐겨찾기