我有一个AWS Athena表格,其中的记录是通过标准的“Select * from...”查询返回的。我执行了“show create table on this”,并创建了一个新表test2。
在test2上执行相同的选择查询总是返回空行。为什么会这样呢?
我有一个AWS Athena表格,其中的记录是通过标准的“Select * from...”查询返回的。我执行了“show create table on this”,并创建了一个新表test2。
在test2上执行相同的选择查询总是返回空行。为什么会这样呢?
Athena中的表将数据保存在AWS中的外部源S3中。当您查看创建表的DDL时,会看到一个LOCATION
,它指向S3存储桶。如果LOCATION
不同,那么当您对此表执行选择操作时,可能会导致未显示任何行。
CREATE EXTERNAL TABLE `test_table`(
...
)
ROW FORMAT ...
STORED AS INPUTFORMAT ...
OUTPUTFORMAT ...
LOCATION s3://bucketname/folder/
MSCK REPAIR TABLE
命令来更新目录中的元数据,以便在添加与Hive兼容的分区后使用。从文档中了解更多信息。
使用MSCK REPAIR TABLE命令,在创建表之后向文件系统(如Amazon S3)扫描添加的与Hive兼容的分区,以更新目录中的元数据。
确保还检查故障排除部分。有一次我错过的是IAM角色上的glue:BatchCreatePartition
策略。