4

这是我第一次尝试在 Athena 中制作我自己的表,所以请保持温和 :) 我还有几个基于 AWS 示例的表,在这个数据库中运行没有任何问题,所以我相信数据库设置正确。

另外,我确定我的正则表达式很糟糕,请暂时忽略它!

我在 S3 上存储了一些 vpc 流日志,日志文件的格式为:

2 123456654321 eni-ae343be4 100.75.233.178 172.31.26.162 49178 80 6 6 270 1488872163 1488872180 ACCEPT OK
2 123456654321 eni-ae343be4 100.75.233.178 172.31.26.162 64013 80 6 2 84 1488872163 1488872180 ACCEPT OK
2 123456654321 eni-ae343be4 206.97.36.202 172.31.26.162 33164 445 6 2 96 1488872163 1488872180 REJECT OK

我的表格基于此处发布的 AWS 示例。我创建的查询是:

CREATE EXTERNAL TABLE IF NOT EXISTS flow_logs_raw_native (
         version int,
         account-id bigint,
         interface-id string,
         srcaddr string,
         dstaddr string,
         srcport int,
         dstport int,
         protocol int,
         packets int,
         bytes int,
         Tstart bigint,
         Tend bigint,
         action string,
         log-status string 
) 
ROW FORMAT SERDE 'org.apache.hadoop.hive.serde2.RegexSerDe'
WITH SERDEPROPERTIES (
         'serialization.format' = '1','input.regex' = '([^ ]*) ([^ ]*) ([^ ]*) ([^ ]*) ([^ ]*) ([^ ]*) ([^ ]*) ([^ ]*) ([^ ]*) ([^ ]*) ([^ ]*) ([^ ]*) ([^ ]*) ([^ ]*)' ) LOCATION 's3://vpcflowlogstos3-bucket-1ns5peqxgc31n/flowlogs/';

每次我运行查询时都会收到一个错误:

line 1:8: no viable alternative at input 'create external' (service: amazonathena; status code: 400; error code: invalidrequestexception; request id: b0cfde99-031c-11e7-b4de-4139fae95147)

我已经看了几个小时了,试图找到拼写错误或缺少元素,但我被卡住了!谁能看到这里有什么问题?

谢谢,

凯利。

4

1 回答 1

6

哦,我明白了,我明白了!

我在某些字段名称中使用了连字符,Athena 不支持。将它们更改为下划线,然后就消失了!

于 2017-03-07T10:51:22.843 回答