如何解决在 ATHENA 中创建带有分区的外部表会导致空表
parquet_data ---
-- dt=2021-07-27
files
-- dt=2021-07-26
files
现在我想创建一个外部表(CETAS)
使用由 dt
列分区的表。
CREATE EXTERNAL TABLE IF NOT EXISTS database.tbl_name (
ACCOUNT_NUM bigint,ID bigint,NAME string
)
PARTITIONED BY (
dt date)
ROW FORMAT SERDE
'org.apache.hadoop.hive.ql.io.parquet.serde.ParquetHiveSerDe'
STORED AS INPUTFORMAT
'org.apache.hadoop.hive.ql.io.parquet.MapredParquetInputFormat'
OUTPUTFORMAT
'org.apache.hadoop.hive.ql.io.parquet.MapredParquetoutputFormat'
LOCATION
's3://location/of/data/'
TBLPROPERTIES (
'classification'='parquet','typeOfData'='file'
);
当我从这个新表中选择时,里面根本没有数据,只有标题。
有什么我错过的地方吗?
我尝试过的东西。
解决方法
使用现有分区数据创建新表时,运行以下命令:
MSCK REPAIR TABLE database.tbl_name
来自MSCK REPAIR TABLE - Amazon Athena:
MSCK REPAIR TABLE 命令扫描文件系统(例如 Amazon S3)以查找在创建表后添加到文件系统的 Hive 兼容分区。 MSCK REPAIR TABLE 比较表元数据中的分区和 S3 中的分区。如果您在创建表时指定的 S3 位置中存在新分区,则会将这些分区添加到元数据和 Athena 表中。
这是必需的,因为分区不是由 Amazon Athena 或 AWS Glue 创建的,因此它还不知道它们存在。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。