Python 如何覆盖AWS Athena表

Python 如何覆盖AWS Athena表,python,amazon-s3,amazon-athena,Python,Amazon S3,Amazon Athena,我正在运行一个python脚本,从CloudFront访问日志中获取错误日志,一旦成功,我可以使用这些日志从Lambda服务执行。当我尝试运行查询时,我看到AWS Athena数据库中存在表名,我无法覆盖。因此,我没有得到预期的输出。下面是我试图执行的脚本 还有别的办法吗?有什么建议吗 #Athena configuration s3_ouput = 's3://athena/athenatest/' database = 's3_accesslog' table = 'test_output1

我正在运行一个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)

我看到您的表在查询中是按
l_shipdate
分区的。因此,为了让表提供最新数据,必须使用分区元数据对其进行更新

这可以通过运行table或在您的案例中运行
query\u 1
之前运行来实现。这将使用最新分区更新您的table
test\u output1
定义

如果情况并非如此,并且您仍然希望覆盖表,则只需在运行CREATETABLE语句之前运行