使用DMS以拼花格式从RDS迁移到s3时,为什么会得到错误的时间戳?

我使用AWS DMS将数据从MySQL RDS迁移到镶木地板格式的S3。 之后,我运行GLUE搜寻器,创建数据库和表。 一切正常,但有时间戳记。

例如,在AWS Athena查询中,我得到的结果是:+51218-09-22 03:06:40.000,而实际值为2019-04-01-14.27.04 -0300。如您所见,日期是完全错误的。所有其他类型的迁移都很好

有人遇到过这个问题吗?

wxcool87 回答:使用DMS以拼花格式从RDS迁移到s3时,为什么会得到错误的时间戳?

解决方案在这里找到:https://forums.aws.amazon.com/thread.jspa?threadID=302156

显然,DMS迁移数据的默认时间戳与Athena如何映射此时间戳(毫秒/纳秒)之间不匹配。

“将parquetTimestampInMillisecond = true添加到目标端点的额外连接属性中以解决此问题” ,然后再次运行DMS和Crawler

,

TL;DR:除以 1000 和 CAST 以从 Parquet v2 格式转换为 Parquet v1 格式

SELECT id,CAST("from_unixtime"(CAST(("to_unixtime"("created_at")  / 1000) AS bigint)) AS timestamp) "created_at",FROM <YOUR_ATHENA_TABLE>

日期/时间戳问题源于 Athena 期望的内容与 S3 parquet 文件(由 RDS 快照导出或 DMS 创建)中提供的内容不兼容。

Athena 需要 Parquet V1 文件,而 RDS 以 Parquet V2 格式导出。 Parquet V1 时间戳是 INT96 而 V2 是 INT64。因此问题。我花了一段时间才弄明白,但功劳归于 him

本文链接:https://www.f2er.com/3100373.html

大家都在问