这是我第一次尝试在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 example published here。我创建的查询是:
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)
我现在已经看了几个小时,试图找到拼写错误或缺少元素,但我被卡住了!任何人都能看到这里的错误吗?
谢谢,
凯利。
答案 0 :(得分:3)
哦,我明白了,我知道了!
我在某些字段名称中使用连字符,Athena不支持此功能。将它们改为下划线并将它移开!