【发布时间】:2020-06-21 17:51:12
【问题描述】:
我在 Athena 中成功创建了数据库表。请参阅下面的查询。
CREATE EXTERNAL TABLE IF NOT EXISTS s3_access_logs_db.wafbucket_logs(
BucketOwner STRING,
Bucket STRING,
RequestDateTime STRING,
RemoteIP STRING,
Requester STRING,
RequestID STRING,
Operation STRING,
Key STRING,
RequestURI_operation STRING,
RequestURI_key STRING,
RequestURI_httpProtoversion STRING,
HTTPstatus STRING,
ErrorCode STRING,
BytesSent BIGINT,
ObjectSize BIGINT,
TotalTime STRING,
TurnAroundTime STRING,
Referrer STRING,
UserAgent STRING,
VersionId STRING,
HostId STRING,
SigV STRING,
CipherSuite STRING,
AuthType STRING,
EndPoint STRING,
TLSVersion STRING
)
ROW FORMAT SERDE 'org.apache.hadoop.hive.serde2.RegexSerDe'
WITH SERDEPROPERTIES (
'serialization.format' = '1', 'input.regex' = '([^ ]*) ([^ ]*)
\\[(.*?)\\] ([^ ]*) ([^ ]*) ([^ ]*) ([^ ]*) ([^ ]*) \\\"([^ ]*) ([^ ]*) (- |[^ ]*)
\\\" (-|[0-9]*) ([^ ]*) ([^ ]*) ([^ ]*) ([^ ]*) ([^ ]*) ([^ ]*) (\"[^\"]*\") ([^ ]*)
(?: ([^ ]*) ([^ ]*) ([^ ]*) ([^ ]*) ([^ ]*) ([^ ]*))?.*$' )
LOCATION 's3://stb-aws-bucket-logging/logs/';
但是,当我对表运行查询时,它返回了一个空结果集。有 20 行但都是空的!!!
SELECT * FROM s3_access_logs_db.wafbucket_logs limit 20;
以前有人遇到过这个问题吗?
谢谢, 团
【问题讨论】:
-
好消息是 Athena 似乎正在正确读取 S3 位置中的文件,因为它按预期返回了 20 行。这些行很可能是空的,因为 Athena 无法正确解析文件中的数据。我怀疑正则表达式存在问题,即它与文件中的数据不匹配,这将是开始故障排除的好地方。
-
我直接从 AWS 开发人员文档中复制了正则表达式。我同意它与正则表达式格式有关。但是如何解决呢?
-
如果您可以分享您尝试遵循的步骤的链接,那么也许我们可以找出问题所在。
标签: amazon-athena