1

我在 Sqoop 手册中注意到了这一点:

24.5。Hive 中的模式定义

Hive 用户会注意到 SQL 类型和 Hive 类型之间没有一对一的映射。通常,没有直接映射的 SQL 类型(例如,DATE、TIME 和 TIMESTAMP)将被强制转换为 Hive 中的 STRING。NUMERIC 和 DECIMAL SQL 类型将被强制为 DOUBLE。在这些情况下,Sqoop 将在其日志消息中发出警告,通知您精度损失。

而且我知道 Sqoop 可以使用指定列类型映射

  • --map-column-java
  • --map-column-hive

但我的情况是我需要一个通用类型到类型的映射,从 RDBMS 类型到 HIVE 类型的映射,这需要将日期或日期时间转换为日期或时间戳。

是否存在解决方案?

4

1 回答 1

0

Sqoop + ORC + hcatalog 帮助您正确映射。Sqoop + parquet 它将日期转换为字符串

mysqlHostname=ip-172-31-2-124.us-west-2.compute.internal                          
mysqlDBName=employees                                                             
mysqlUsername=hive                                                                


sqoop import \
      --connect jdbc:mysql://$mysqlHostname/$mysqlDBName \
      --table salaries \
      --username $mysqlUsername \
      -P \
      --hcatalog-table orc_salaries \
      --create-hcatalog-table \
      --map-column-hive  from_date=date,to_date=date\
      --hcatalog-storage-stanza 'stored as orcfile tblproperties ("orc.compress"="ZLIB")'
于 2017-05-22T11:04:24.090 回答