JD *_*D D 3 amazon-web-services presto parquet aws-dms amazon-athena
目前,我们有一个 DMS 任务,它将获取 MySQL DB 的内容并将文件以 parquet 格式转储到 S3。
parquet 中时间戳的格式最终为 TIMESTAMP_MICROS。
这是一个问题,因为 Presto(Athena 的底层实现)不支持微秒精度的时间戳,并假设所有时间戳均为毫秒精度。
这不会直接导致任何错误,但它会使时间显示为某个极端的未来日期,因为它将微秒数解释为毫秒数。
我们目前正在解决这个问题,方法是在 Athena 表之上创建 Athena 视图,这些视图获取这些时间戳,将它们转换为 unix 时间戳(即数字),除以 1000 以转换为毫秒分辨率,然后转换回时间戳。
这对于概念证明和识别问题来说很好,但这对我们来说不起作用,因为我们有很多带有很多时间戳列的表,并且不想在顶部引入这个脆弱的视图层。
为 Athena 和 DMS 团队创建了支持票证,双方都确认了问题并创建了功能请求,以便为这种不兼容的情况创建本机解决方案,但支持工程师都无法提供内置的解决方法。DMS 似乎不支持将列类型更改为毫秒精度或 varchar 字符串。对于 Athena 来说,这只是记录在案的 Presto 限制。
有没有人遇到过这个问题并找到解决方案?
更改 MySQL 数据库中的精度并不是真正的选择,因为许多客户端都使用它,并且我们不想冒破坏接口的风险。
我正在考虑创建一个作业,该作业将在创建新镶木地板时运行,以查找 TIMESTAMP_MICRO 字段并将它们列到 TIMESTAMP_MILLIS 中。不太确定解决这个问题的最佳方法(胶水/火花工作?)
DMS 很棒,使转储到 parquet 变得超级简单,可能还有其他方法从 MySQL 提取数据。还有其他工具可以在不需要太多定制开发的情况下完成此操作吗?
| 归档时间: |
|
| 查看次数: |
3229 次 |
| 最近记录: |