如何解决如何覆盖AWS Athena表
我正在运行一个python脚本,以从CloudFront访问日志中获取错误日志,一旦成功,我可以将其用于从Lambda服务执行。当我尝试运行查询时,我看到表名称在AWS Athena数据库上存在,因此无法覆盖。所以我没有得到预期的输出。下面是我要执行的脚本。
还有其他方法吗?有什么建议吗?
#Athena configuration
s3_ouput = 's3://athena/athenatest/'
database = 's3_accesslog'
table = 'test_output1'
#Athena database and table definition
create_database = "CREATE DATABASE IF NOT EXISTS %s;" % (database)
create_table = \
"""CREATE EXTERNAL TABLE IF NOT EXISTS %s.%s (
`Date` DATE,Time STRING,Location STRING,SCBytes BIGINT,RequestIP STRING,Method STRING,Host STRING,Uri STRING,Status INT,Referrer STRING,UserAgent STRING,UriQS STRING,Cookie STRING,ResultType STRING,RequestId STRING,HostHeader STRING,Protocol STRING,CSBytes BIGINT,TimeTaken FLOAT,XForwardFor STRING,SSLProtocol STRING,SSLCipher STRING,ResponseResultType STRING,CSProtocolVersion STRING,FleStatus STRING,FleEncryptedFields INT,CPort INT,TimeToFirstByte FLOAT,XEdgeDetailedResult STRING,ScContent STRING,ScContentLen BIGINT,ScRangeStart BIGINT,ScRangeEnd BIGINT
)
PARTITIONED BY (
`l_shipdate` string)
ROW FORMAT DELIMITED FIELDS TERMINATED BY '\t'
LOCATION '%s'
TBLPROPERTIES ('skip.header.line.count' = '2');""" % ( database,table,s3_input )
#Query definitions
query_1 = "SELECT * FROM %s.%s where CAST(status AS VARCHAR) like '404';" % (database,table)
解决方法
我看到您的表在查询中按app.get("/users",firstfunction(),secondfunction);
进行了分区。因此,为使您的表能够为您提供最新数据,必须使用分区元数据对其进行更新。
这可以通过运行MSCK repair表或在运行l_shipdate
之前运行ALTER TABLE ADD PARTITION来实现。这将用最新的分区更新表query_1
的定义
如果不是这种情况,但您仍要覆盖表,则可以在运行CREATE TABLE语句之前简单地运行DROP TABLE。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。