amazon-s3 - 在 Amazon Athena 中创建内部表
问题描述
我正在尝试在 Athena 中创建一个内部表,在 S3 中以 parquet 格式的数据:
CREATE TABLE IF NOT EXISTS `vdp_dev.owners_daily`(
`owner_id` string COMMENT 'from deserializer',
`username` string COMMENT 'from deserializer',
`billing_with` string COMMENT 'from deserializer',
`billing_contacts` string COMMENT 'from deserializer',
`error_code` string COMMENT 'from deserializer')
PARTITIONED BY (
`dt` string)
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://xxxxx-xx-xxxx-xxxxxx/dim/daily/owners';
但出现以下错误:
仅支持创建外部表。(服务:AmazonAthena;状态代码:400;错误代码:InvalidRequestException;请求 ID:13c5325b-2217-4989-b5f3-e717462329c1)
有人知道为什么会这样吗?为什么我不能在 Athena 中创建内部表?
解决方案
从雅典娜文档:
所有表都是 EXTERNAL 如果您使用没有 EXTERNAL 关键字的 CREATE TABLE,Athena 会发出错误;只能创建带有 EXTERNAL 关键字的表。我们建议您始终使用 EXTERNAL 关键字。在 Athena 中删除表时,仅删除表元数据;数据保留在 Amazon S3 中。
推荐阅读
- jenkins - 如何仅通过 Jenkinsfile 使作业可编辑并使 GUI 只读?
- opencv - OpenCV BodyPix 面具
- swift - 如何检测 Firebase url 是照片还是视频 - Swift
- java - 将参数传递给我的 java AWS Lambda 函数
- python - 如何迭代由两列组成的 value_counts 输出?
- vue.js - 无法在 Vue 3 setup() 中监视函数
- sql - 使用 STUFF 函数只带入与表中的列匹配的值
- java - Ebean 查询似乎停止执行
- r - 按行号将数据框拆分为数据框列表
- c++ - 如何强制 SFINAE 选择结构的第二种定义?