是否可以向现有 AWS Athena 表中的结构添加字段?

tan*_*Gee 3 amazon-web-services amazon-athena

我有一个表,用于跟踪高吞吐量站点上的用户操作,该表定义为(不相关字段等已删除):

CREATE EXTERNAL TABLE `actions`(
  `uuid` string COMMENT 'from deserializer', 
  `action` string COMMENT 'from deserializer', 
  `user` struct<id:int,username:string,country:string,created_at:string> COMMENT 'from deserializer')
PARTITIONED BY ( 
  `ingestdatetime` string)
ROW FORMAT SERDE 
  'org.openx.data.jsonserde.JsonSerDe' 
STORED AS INPUTFORMAT 
  'org.apache.hadoop.mapred.TextInputFormat' 
OUTPUTFORMAT 
  'org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat'
LOCATION
  's3://<path_to_bucket>'
TBLPROPERTIES (
  'transient_lastDdlTime'='1506104792')
Run Code Online (Sandbox Code Playgroud)

并希望向用户数据添加更多字段(例如level:int来跟踪用户执行操作时的级别)。

是否可以更改表定义以包含这些新属性,如果可以,是否可以在它们不在源数据文件中的情况下配置默认值?

sin*_*h30 5

不,您无法向 Athena 中的结构添加新列。您可以删除架构,然后创建一个包含所需列的新表。删除架构或数据库不会影响您的数据,因为 Athena 本身不存储数据,它只是指向 S3 中的数据。