繁体   English   中英

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

[英]Athena returns "Zero records returned"

我已将我的数据加载到 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 确实需要更好的错误处理。

如果你 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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM