【问题标题】:How to overwrite AWS Athena tables如何覆盖 AWS Athena 表
【发布时间】:2020-08-20 20:20:28
【问题描述】:

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

【问题讨论】:

    标签: python amazon-s3 amazon-athena


    【解决方案1】:

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

    这可以通过在运行 query_1 之前运行 MSCK repair 表或 ALTER TABLE ADD PARTITION 来实现。这将使用最新分区更新表 test_output1 定义。

    如果情况并非如此,并且您仍想覆盖您的表,那么您只需在运行 CREATE TABLE 语句之前运行 DROP TABLE

    【讨论】:

      猜你喜欢
      • 2021-01-20
      • 1970-01-01
      • 2021-12-22
      • 2018-05-13
      • 2020-03-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多