gpt4 book ai didi

amazon-web-services - AWS DMS : How to handle TIMESTAMP_MICROS parquet fields in Presto/Athena

转载 作者:行者123 更新时间:2023-12-04 01:43:31 28 4
gpt4 key购买 nike

目前,我们有一个 DMS 任务,它将获取 MySQL 数据库的内容并将文件以 parquet 格式转储到 S3。

parquet 中时间戳的格式最终为 TIMESTAMP_MICROS。

这是 Presto(Athena 的底层实现)的问题 does not support timestamps in microsecond precision and makes the assumption that all timestamps are in millisecond precision.

这不会直接导致任何错误,但它会使时间显示为某个极端的 future 日期,因为它将微秒数解释为毫秒数。

我们目前正在通过在采用这些时间戳的 Athena 表之上创建 Athena View 来解决此问题,将它们转换为 unix 时间戳(即数字),除以 1000 以转换为毫秒分辨率,然后再转换回时间戳。

这对于概念验证和识别问题来说很好,但这对我们不起作用,因为我们有很多表,其中有很多时间戳列,并且不想在顶部引入这个脆弱的 View 层。

支持工单是为 Athena 和 DMS 团队创建的,他们都确认了问题并在他们这边创建了功能请求来为这个不兼容的问题创建本地解决方案,但支持工程师都无法提供内置的解决方法。 DMS 似乎不支持将列类型更改为毫秒精度或 varchar 字符串。对于 Athena,这只是记录在案的 Presto 限制。

有没有人遇到过这个问题并找到了解决方案?

更改 MySQL 数据库的精度并不是一个真正的选择,因为许多客户都在使用它,我们不想冒破坏接口(interface)的风险。

我正在考虑创建一个作业,该作业将在创建新 Parquet 时随时运行,以查找 TIMESTAMP_MICRO 字段并将它们列为 TIMESTAMP_MILLIS。不确定解决此问题的最佳方法(Glue/Spark 作业?)

DMS 很棒,它使转储到 parquet 变得 super 简单,可能还有其他方法可以从 MySQL 中提取数据。有没有其他工具可以在没有太多定制开发的情况下做到这一点?

最佳答案

通过目标端点,您可以设置“额外连接属性”。如果将 parquetTimestampInMillisecond 设置为 true,时间戳将以毫秒为单位。

Source

关于amazon-web-services - AWS DMS : How to handle TIMESTAMP_MICROS parquet fields in Presto/Athena,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56430840/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com