微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

雅典娜返回“返回零记录”

如何解决雅典娜返回“返回零记录”

我已将数据加载到 S3(Json 格式)中。我已经执行了“MSCK REPAIR TABLE dqme_violations_v1”我已经创建了我的表,它似乎指向了正确的位置。什么给?

  1. 文件是否需要以 .json 为后缀?
  2. 还有其他建议吗?我不知所措。

我的表(通过: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 确实需要更好的错误处理。

如果你去 AWSGlue -> Tables -> View partitions,它会列出它找到的分区。我的是空的。

我在一家大公司工作,它锁定了很多东西。所以我不得不通过 Lambda 运行一些 sql 来添加分区。我们每小时运行一次批处理作业,将 NEXT hours 分区添加到表中(是的,文件尚未创建。Athena 不在乎。)

,

在这种情况下,您有一个看起来像 yyyy-MM-dd-HH 的分区。使用 partition projection 处理分区有更巧妙的方法。设置好后,无需做任何修表或手动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'
)

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。