阻止 sqoop 将 datetime 转换为 bigint
Stop sqoop from converting datetime to bigint
最近我注意到,每当我使用 Sqoop 从 SQL 数据库中提取数据时,所有日期时间字段都会转换为 bigint (epoch * 1000) 而不是字符串。
重要提示:我存储为镶木地板。
我一直在尝试一堆 sqoop 标志,例如 "--map-column-java"
,但我不想为数千个表中的数百列手动定义它。
我缺少什么标志来防止这种 sqoop 行为?
sqoop在明文存储的时候好像没有这样做
我决定不让 sqoop 在我的 table 上施展神秘魔法,而是决定执行以下操作:
- 提取到临时 table,存储为文本。
- 创建一个 table(如果不存在),如临时 table,存储为 parquet
- 将临时存储的文本 table 插入并覆盖存储的镶木地板 table
这允许正确的日期格式,而无需在 Sqoop 中调整(可能不存在)配置和设置。
唯一的缺点是速度稍慢
最近我注意到,每当我使用 Sqoop 从 SQL 数据库中提取数据时,所有日期时间字段都会转换为 bigint (epoch * 1000) 而不是字符串。
重要提示:我存储为镶木地板。
我一直在尝试一堆 sqoop 标志,例如 "--map-column-java"
,但我不想为数千个表中的数百列手动定义它。
我缺少什么标志来防止这种 sqoop 行为?
sqoop在明文存储的时候好像没有这样做
我决定不让 sqoop 在我的 table 上施展神秘魔法,而是决定执行以下操作:
- 提取到临时 table,存储为文本。
- 创建一个 table(如果不存在),如临时 table,存储为 parquet
- 将临时存储的文本 table 插入并覆盖存储的镶木地板 table
这允许正确的日期格式,而无需在 Sqoop 中调整(可能不存在)配置和设置。
唯一的缺点是速度稍慢