阻止 sqoop 将 datetime 转换为 bigint

Stop sqoop from converting datetime to bigint

最近我注意到,每当我使用 Sqoop 从 SQL 数据库中提取数据时,所有日期时间字段都会转换为 bigint (epoch * 1000) 而不是字符串。

重要提示:我存储为镶木地板。

我一直在尝试一堆 sqoop 标志,例如 "--map-column-java",但我不想为数千个表中的数百列手动定义它。

我缺少什么标志来防止这种 sqoop 行为?

sqoop在明文存储的时候好像没有这样做

我决定不让 sqoop 在我的 table 上施展神秘魔法,而是决定执行以下操作:

  1. 提取到临时 table,存储为文本。
  2. 创建一个 table(如果不存在),如临时 table,存储为 parquet
  3. 将临时存储的文本 table 插入并覆盖存储的镶木地板 table

这允许正确的日期格式,而无需在 Sqoop 中调整(可能不存在)配置和设置。

唯一的缺点是速度稍慢