![](/img/trans.png)
[英]AWS Athena Return Zero Records from Tables Created by GLUE Crawler input csv from S3
[英]Athena returns "Zero records returned"
我已将我的数据加载到 S3(Json 格式)中。 我已经执行了“ MSCK REPAIR TABLE dqme_violations_v1 ”我已经创建了我的表,它似乎指向了正确的位置。 是什么赋予了?
我的表(通过:show create table dqme_violations_v1):
CREATE EXTERNAL TABLE `dqme_violations_v1`(
`asset_id` string COMMENT 'from deserializer',
`make` string COMMENT 'from deserializer',
`serial_number` string COMMENT 'from deserializer',
`message_format` string COMMENT 'from deserializer',
`content_type` string COMMENT 'from deserializer',
`content` string COMMENT 'from deserializer',
`rule_id` string COMMENT 'from deserializer',
`ruleset` string COMMENT 'from deserializer',
`rule_type` string COMMENT 'from deserializer',
`error_type` string COMMENT 'from deserializer',
`error_name` string COMMENT 'from deserializer',
`error_criteria` string COMMENT 'from deserializer')
COMMENT 'The DQME OG Grief violation table'
PARTITIONED BY (
`dt` string)
ROW FORMAT SERDE
'org.apache.hive.hcatalog.data.JsonSerDe'
WITH SERDEPROPERTIES (
'paths'='make, serialNumber')
STORED AS INPUTFORMAT
'org.apache.hadoop.mapred.TextInputFormat'
OUTPUTFORMAT
'org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat'
LOCATION
's3://pfm-og-blah-store-use2-s3-prod/violations'
TBLPROPERTIES (
'transient_lastDdlTime'='1610571957')
我的 s3:
s3://pfm-og-blah-store-use2-s3-prod/violations/dt=2021-01-12-16/
它包含一个 json 文件,里面有一堆 json:
pfm-og-barrel_grief_use2-kfh-prod-2-2021-01-12-16-06-07-0abdaa4f-92db-46ee-8c0c-2001e8b5512a
TLDR - 我没有运行MSCK REPAIR TABLE dqme_violations_v1的权限
瘦子:
所以运行 MSCK 命令没有显示错误迹象。 它似乎在运行并且实际上列出了它发现的不在 Metastore 中的分区。 “不”应该告诉我它没有添加它们,因为它每次都显示)。 Athena 确实需要更好的错误处理。
如果你 go 到 AWSGlue -> 表 -> 查看分区,它会列出它找到的分区。 我的是空的。
我在一家大公司工作,它锁定了很多东西。 所以我不得不通过 Lambda 运行一些 sql 来添加分区。 我们每小时运行一次批处理作业,将 NEXT hours 分区添加到表中(是的,文件尚未创建。Athena 不关心。)
在这种情况下,您有一个看起来像yyyy-MM-dd-HH
的分区。 有一种更巧妙的方法可以使用分区投影来处理分区。 设置完成后,无需进行任何修复表或手动ADD PARTITION
,您可以通过添加以下内容直接通过 DDL 进行设置:
...
TBLPROPERTIES (
'transient_lastDdlTime'='1610571957',
projection.enabled='true',
projection.dt.type='date',
projection.dt.format='yyyy-MM-dd-HH',
projection.dt.range='NOW-30DAYS,NOW'
)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.