【问题标题】:Amazon Athena S3 PrefixAmazon Athena S3 前缀
【发布时间】:2018-02-22 14:07:40
【问题描述】:

我正在雅典娜中运行以下查询

CREATE EXTERNAL TABLE IF NOT EXISTS elb_logs (
 request_timestamp string,
 elb_name string,
 request_ip string,
 request_port int,
 backend_ip string,
 backend_port int,
 request_processing_time double,
 backend_processing_time double,
 client_response_time double,
 elb_response_code string,
 backend_response_code string,
 received_bytes bigint,
 sent_bytes bigint,
 request_verb string,
 url string,
 protocol string,
 user_agent string,
 ssl_cipher string,
 ssl_protocol 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.-]*)$' )
LOCATION 's3://your_log_bucket/prefix/AWSLogs/AWS_account_ID/elasticloadbalancing/';

在此查询中,我们需要如下提及 S3 位置

s3://your_log_bucket/prefix/AWSLogs/AWS_account_ID/elasticloadbalancing/

这里提到的前缀是什么 s3://your_log_bucket/prefix/AWSLogs/AWS_account_ID/elasticloadbalancing/ 日志的 S3 位置实际上是 s3://your_log_bucket/AWSLogs/AWS_account_ID/elasticloadbalancing/

我错过了什么吗?

【问题讨论】:

    标签: amazon-s3 amazon-elb amazon-athena


    【解决方案1】:

    如果您的日志位置是s3://your_log_bucket/AWSLogs/AWS_account_ID/elasticloadbalancing/,那么您不需要定义前缀值,只需将此 s3 位置保留在 Athena 表的位置即可。

    仅供参考,假设多个 api 的负载均衡器在相同的 s3 存储桶中生成日志数据,那么会有不同的 s3 路径,例如 s3://your_log_bucket/api-v1s3://your_log_bucket/api-v2 等。这里的前缀是 api-v1,而 s3 的位置是 s3: //your_log_bucket/api-v1/AWSLogs/AWS_account_ID/elasticloadbalancing/

    【讨论】:

      猜你喜欢
      • 2019-12-02
      • 1970-01-01
      • 1970-01-01
      • 2017-05-04
      • 1970-01-01
      • 1970-01-01
      • 2017-06-11
      • 2021-05-09
      • 1970-01-01
      相关资源
      最近更新 更多