【问题标题】:Athena Partition Projection for Date column vs. String日期列与字符串的 Athena 分区投影
【发布时间】:2021-02-25 19:24:07
【问题描述】:

我希望使用 Athena Partition Projection 来分析来自 AWS 应用程序负载均衡器的日志文件和 firehose 发出的日志。 S3 中的数据以年/月/日为前缀,可能还有小时。我已经能够使用Firehose Example 完成;但是这个例子使用了一个字符串格式的分区列。

我正在寻找是否可以改用日期格式的分区列(使用分区项目和 firehose 发出的 s3 前缀格式),因为我们的查询编写器已经习惯了我们大多数涉及日期列的查询,并且它避免了相对日期查询需要字符串格式。这是可能的还是需要更改 s3 前缀才能完成?

字符串列的表格属性:WORKS

PARTITIONED BY ( 
  `logdate` string)
TBLPROPERTIES (
  'projection.enabled'='true', 
  'projection.logdate.format'='yyyy/MM/dd', 
  'projection.logdate.interval'='1', 
  'projection.logdate.interval.unit'='DAYS', 
  'projection.logdate.range'='NOW-2YEARS,NOW', 
  'projection.logdate.type'='date',
  'storage.location.template'='s3://bucket/prefix/${logdate}')

日期分区列的表属性不起作用

PARTITIONED BY ( 
  `logdate` date)
TBLPROPERTIES (
  'projection.enabled'='true', 
  'projection.logdate.format'='yyyy/MM/dd', 
  'projection.logdate.interval'='1', 
  'projection.logdate.interval.unit'='DAYS', 
  'projection.logdate.range'='NOW-2YEARS,NOW', 
  'projection.logdate.type'='date',
  'storage.location.template'='s3://bucket/prefix/${logdate}')

HIVE_INVALID_PARTITION_VALUE:DATE 分区键的分区值“2018/11/13”无效:logdate=2018%2F11%2F13

【问题讨论】:

  • 这两个TBLPROPERTIES 列表是相同的。您能否使用有效的属性更新问题?另外,请发布您的分区键及其类型。

标签: amazon-web-services amazon-athena


【解决方案1】:

我认为您唯一需要做的就是确保logdate 分区键的类型为string

PARTITIONED BY (logdate string)

这和projection.logdate.type不一样,应该继续是date

date 类型的分区键只是分区投影执行的计算中的日期。对于所有其他目的,它们都是字符串。 PP 将使用您指定的日期格式解析值,进行计算,然后使用相同的日期格式输出字符串。这发生在查询计划期间,在涉及 Presto 引擎之前。

Presto 的 schema-on-read 方法意味着,如果列的格式与预期的日期格式匹配,则可以说列的类型为 dateyyyy-MM-dd Java 格式。您从 Firehose 的 S3 密钥获得的格式 yyyy/MM/dd 无法自动转换为 date,需要显式解析:

parse_datetime(logdate, 'yyyy/MM/dd')

我认为,如果 PP 能够知道分区键的类型,这样您就可以完成您尝试做的事情,那就太好了,但我认为由于 PP 发生在查询计划期间,而且很可能不会发生在任何地方在已知事物类型的地方附近可能很难实现。

【讨论】:

  • 感谢有关分区键意识的上下文和解释。我认为这不太可能,但想确定一下。也许未来的版本会带来意识。
猜你喜欢
  • 1970-01-01
  • 2021-05-11
  • 1970-01-01
  • 2023-04-10
  • 2018-09-14
  • 2021-07-29
  • 2013-10-23
  • 2021-03-16
  • 1970-01-01
相关资源
最近更新 更多